問題タブ [myisam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
151 参照

mysql - MySQL テーブル (myisam エンジン) の TableName.MYD.filepart ファイルとは

MySQL データベース ( myisam エンジン) で TableName.MYD.filepart を取得しました。

0 投票する
1 に答える
610 参照

mysql - テーブルロックはスケーリングしますか?/ネストされたセットの場合、行ロックの方が効率的ですか?

ネストされたセットを使用して、階層データをMyISAMテーブルに格納しています。テーブルは、ユーザーごとにいくつかの階層セットで構成されています。各ユーザーはそれぞれのツリーに書き込む唯一のユーザーになりますが、他のユーザーはそれらから読み取ることができます。ノードの削除/挿入では、同じツリー内の他の行のlft値とrgt値を更新する必要があり、場合によっては数百行になります。

これを行うには、テーブルの書き込みロックを取得し、ツリー内の他のノードを更新し、行を削除/挿入して、テーブルのロックを解除する必要があります。

私が疑問に思っているのはこれです-テーブルロックは数百人の同時ユーザーに対応できますか?数千?

この場合、InnoDBの行ロックはより効率的でしょうか?(主にユーザー自身のみが使用する数百行をロックします)

行ロックを使用する場合、デッドロックエラーに対処するために明示的なロジックを追加する必要がありますか?

0 投票する
2 に答える
1830 参照

sql - 大きなMyISAMテーブルは、非同時の挿入/更新でも遅くなります

〜50'000'000レコード(Webクローラーのタスク)を含むMyISAMテーブルがあります。

数秒に1回、次のいずれかの操作が発生します(ただし、同時に発生することはありません)。

  1. INSERT ... VALUES(500行)-新しいタスクを挿入します
  2. UPDATE ... WHERE id IN(最大10 ids)-タスクのバッチの状態を更新します
  3. SELECT ... WHERE(next_random_task indexによる)-処理するタスクのバッチをロードします

私の問題は、挿入と更新が非常に遅いことです-数十秒のオーダーで、時には1分以上実行されます。ただし、選択は高速です。なぜこれが発生する可能性があり、パフォーマンスを向上させる方法は?

0 投票する
1 に答える
258 参照

mysql - MySQL: innoDB ではなく MyIsam を選択する必要があるのはどのような場合ですか?

InnoDB はほぼ完全に優れているように見えますが、どのような場合に MyIsam を使用する必要がありますか?

前もって感謝します!

0 投票する
2 に答える
228 参照

php - PHP と jSon を使用して MyISAM データセット全体をプリロードすることは可能ですか?

例えば

1 つのカテゴリに 1000 個の製品があるとします。そして、これらの製品をフィルタリングしたいと思います。

json を使用して製品をフィルタリングします。DB に対して個別のクエリを実行する必要があるたびに。

製品テーブルをプリロードして表示できるかどうかを知っている人がいるかどうか疑問に思っていました. プリロード バーの例: 検索の初期化 (0 - 100%)

そのため、システム全体がロード時に 1 回だけ初期化されるため、検索結果がすぐに得られることを願っています。

残念ながら、顧客のサーバーを微調整することは私たちにとって実際にはオプションではないため、ここの誰かがより良い提案をしてくれることを願っています

前もって感謝します!

0 投票する
2 に答える
246 参照

mysql - myisam から innodb への移行時の参照整合性の問題

データベースの 1 つを myisam から innodb に移行したいと考えています。主な理由は、私のアプリケーションが参照整合性を尊重できるようにすることです。

これは私がしたことです

  1. 現在の myisam データベースをエクスポートしました
  2. データベースを削除しました
  3. innodb データベースに切り替えましたhttp://parasjain.net/2010/06/08/how-to-switch-to-innodb-database-in-mysql/
  4. エンジン スイッチを確認し、新しいデータベースを作成しました

参照整合性が機能するようになりました。たとえば、Parent p1 と Child c1 を作成し、c1 で p1 を参照する場合、P1 に依存する子がある限り、P1 を削除できません。

ここまでは順調ですね

しかし、エクスポートされたダンプから古いデータをインポートすると問題が発生します

問題は、新しいデータに対して参照整合性が尊重されることです。しかし、私の既存のデータでは、c2 によって参照される p2 のような関係がある場合、p2 を削除して参照整合性を壊すことができます。c2 は現在孤立しています。

既存のデータにも参照整合性が適用されるように、テーブルを修復/再インデックス化する方法はありますか?

0 投票する
1 に答える
375 参照

mysql - `INSERT`が特定のMyISAMテーブルに対して同時であることを確認しますか?

基本的にログを含むMyISAMテーブルがあります。マシンのクラスターはINSERT、このテーブルで1秒あたり50の割合で単一レコードを実行しますが、同じテーブルもSELECTWebアプリケーションから取得され、これに対応するためにインデックスが付けられます。UPDATEただし、 sまたはsはありませDELETEん。

したがって、私が収集したものから、同時挿入を使用する必要があります。(そうですか?)MyISAMは通常、追加の作業なしでこれを実行します。(これは正しいです?)

しかし、私が見つけられないのは、与えられたものが同時に処理されることを保証する方法です。グローバル変数をにINSERT設定できることは知っていますが、これをグローバルに設定したくありません。concurrent_insert2

だから私の質問は:

  • 同時挿入を保証するために私が見逃している方法はありますか?

  • そうでない場合、テーブルが同時挿入要件を満たしているかどうかを確認するために使用できるコマンドはありますか?(テーブルに穴が開いているかどうかを知るだけで十分だと思いますか?)テーブルを監視するだけでも解決できるからです。

  • そして、私も興味があります。この種の負荷をより適切に処理できる他のデータベースシステムはありますか?もしそうなら、私はNoSQLソリューションで完全に大丈夫です。RubyとCから話せる限り。

0 投票する
2 に答える
2417 参照

mysql - MyISAM テーブルの 2^32 行という MySQL の制限を克服する

MySQL (5.0.x および 5.1.x のさまざまなバージョンを試しました) で 2^32 行を超える MyISAM テーブルを作成したいと考えています。これを実現する方法は、MySQL が 4 バイトの行ポインタではなく 8 バイトを使用するようにすることです。

以下は MySQL のマニュアルからの引用です。

--with-big-tables オプションを使用して MySQL をビルドすると、行の制限が 1.844E+19 行に増えます。セクション2.3.2「一般的な構成オプション」を参照してください。Unix および Linux のバイナリ ディストリビューションは、このオプションでビルドされます。

シンプルですね。しかし、Linux x86_64 用のさまざまなバイナリ ディストリビューションを試し、「--with-big-tables」オプションを使用してソース コードから MySQL を構築しました。いずれの場合も、2^32 の制限を超えることはできません。次のようにテーブルを作成します。

CREATE TABLE big (col int) MAX_ROWS=1099511627776

そして、テーブルのステータスを確認すると、次のように表示されます。

Create_options: max_rows=4294967295

32 ビットの煉獄を脱出するにはどうすればよいですか? InnoDB を使用すると問題が解決する可能性がありますが、実行しているクエリの種類ではパフォーマンスが大幅に低下します。

参考までに、問題を解決しなかった重要なリファレンスを次に示します。

http://jeremy.zawodny.com/blog/archives/000796.html

0 投票する
8 に答える
4107 参照

database - トランザクションなしでOracleを使用するにはどうすればよいですか?

MySQLには、トランザクションをサポートしない特別なテーブルタイプMyISAMがあります。オラクルにはこのようなものがありますか?非常に高速で(大量のデータを格納する)、トランザクションを必要としない書き込み専用データベース(ロギング用)を作成したいと思います。

0 投票する
1 に答える
759 参照

c# - MyIsam テーブルでの Entity Framework の使用

Entity Framework と MyIsam テーブルについて質問があります。

私の運用データベースは MyIsam テーブルのみで構成されています。多くの場合、UserId のようなプライマリ キーと、自動インクリメンタルなセカンダリ KeyId を使用します。

セカンダリ自動増分キーは InnoDb では許可されておらず、変換前にそれらを取り除く作業が大量にあるため、代わりに Entity Framework で MyIsam テーブルを使用することを考えています。

問題は、これをどのように設定するかです。外部キーがない場合、テーブルを EF モデルに追加するときに関係はありません。関連付けを手動で追加しようとしましたが、常にエラーが発生します。これは、セカンダリ自動インクリメント キーを使用している場合でも可能ですか?

誰かが私を助けようとしてくれたら、とても感謝しています。

ありがとう

/アンドレアス