問題タブ [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.
sql - MySQL MyISAM テーブルのパフォーマンスの問題の再訪
この質問はこれに関連しています。
次の構造のページテーブルがあります。
データ列には、レコードあたり約 80KB ~ 200KB のサイズのテキストが含まれます。データ列に格納されるデータの合計サイズは約 1.5GB です。
このクエリの実行には0.08秒かかります。
ただし、このクエリの実行には約130.0秒かかります。
ご覧のとおり、page.pageid にプライマリ インデックスがあり、page.sourceid にインデックスがあります。では、2 番目のクエリにはそれほど時間がかかるのでしょうか?
編集#1
EXPLAINが返されました
申し訳ありませんが、プロファイリングが機能しませんでした... MySQL (4.1.22) は SHOW PROFILE クエリを認識しませんでした。
SHOW INDEXが返されました
sql - 遅いクエリを実行する単純なMySQLテーブル
2列の非常に単純なテーブルがありますが、450万行あります。
次のような単純なクエリを実行すると、次のようになります。
mysqlはCPUをスパイクし、約10行を返すまでに2〜5秒かかります。データはテーブル全体に非常に均等に分散されており、インデックス付きフィールドにアクセスしています(テーブルも分析/最適化しており、テーブルの内容を変更することはありません)。クエリにこれほど時間がかかる理由は何ですか。
編集:navicatが私に嘘をついているようで、テーブルが表示されていたため、主キーが実際には正しい順序でキー設定されていませんでした。
mysql - MyISAM テーブルが破損する
「テーブルが壊れているとマークされているため、修復する必要があります」などのエラーが表示されることがあります。その DB (テーブル) は MyISAM を使用しています。最近、それが続いています。原因は何ですか?最近、私はバッチ挿入を実行しています
INSERT INTO table (..., ..., ...) VALUES (...), (...), (...) ...
そしてハングしただけです。または完了するのに非常に時間がかかりました。翌日、テーブルを確認すると、再び破損しているとマークされていました。mysqlcheck -r を使用しようとすると、その「破損した」テーブルに到達すると、すべてのテーブルが正常であると表示され、再びハングしました...
だから、これを防ぐために私は何ができるでしょうか。そして、何が原因である可能性があります。DB はサードパーティでホストされています。これをデバッグするにはどうすればよいですか?
InnoDB は、使用するより信頼性の高いエンジンですか? MyISAM の方が速いと聞きましたが、InnoDB も高速であると言う人もいますが、最適化にはもう少し時間がかかります。InnoDB の方が信頼性は高いが、最適化を行っても全体的に少し遅いと結論付けることができますか?
mysql - MySQL FULLTEXT が機能しない
MySQL の FULLTEXT インデックスを使用して、PHP Web アプリの検索サポートを追加しようとしています。
テスト テーブルを作成し (MyISAM タイプを使用し、単一のテキスト フィールドを使用a
)、いくつかのサンプル データを入力しました。私が正しければ、次のクエリはこれらの両方の行を返すはずです。
ただし、何も返しません。私は少し調査を行い、私が知る限りすべてを正しく行っています.テーブルはMyISAMテーブルで、FULLTEXTインデックスが設定されています. プロンプトとphpMyAdminからクエリを実行しようとしましたが、うまくいきませんでした。私は何か重要なものを見逃していますか?
更新: OK、Cody のソリューションは私のテスト ケースでは機能しましたが、実際のテーブルでは機能しないようです。
そして私が使用しているデータ:
私が現在実行しているクエリは次のとおりです。
行 3、header_bg2.png を返す必要があります。代わりに、別の空の結果セットを取得します。ブール検索の私のオプションは次のとおりです。
「header」は単語の長さの制限内にあり、それがストップ ワードであるとは思えません (リストの取得方法がわかりません)。何か案は?
php - MySQL の関連レコードの削除
2 つの MySQL (MyISAM) テーブルがあります。
対応する投稿レコードが「投稿」テーブルから削除されたときに、特定の投稿に属する「コメント」テーブル内のすべてのコメントを削除したい。
これは、InnoDB でカスケード削除を使用して (外部キーを設定することにより) 達成できることを知っています。しかし、PHP を使用して MyISAM でそれを行うにはどうすればよいでしょうか?
mysql - エンジンを MyISAM から InnoDB に変更する際の MySQL エラーを解決する
私のデータベースは先週いくつかの破損を経験し、Web ホスティング会社の技術者がすべてのテーブルを MyISAM に変更し、それらのテーブルを修復しました。
ただし、私のアプリケーションには InnoDB テーブルが必要です。このウェブサイトに記載されている方法を試しましたが、このメッセージが表示されます
問題を解決するにはどうすればよいですか?
mysql - MySQL テーブル (MyISAM および InnoDB) を復元するために必要なファイルの最小セット
MyISAM テーブルを復元する場合、厳密に必要なファイルはデータ ファイル ( tablename.MYD
) だけです。残りのファイル (インデックス ファイルtablename.MYI
とtablename.frm
) は、 を使用してデータ ファイルから再作成できますREPAIR TABLE
。
代わりに(" " 設定で) InnoDB を使用していると仮定innodb_file_per_table
します。ファイルからデータベース テーブルを復元するために必要なファイルの最小セットは何ですか?
mysql - 削除された行が再び表示される
mysql (5.0.51a-3ubuntu5.4-log) に接続する ubuntu で ac プログラムを実行しています。
プログラムの主なタスクは、小さな (<5000 行) myisam テーブルからレコードを処理することです。行が正常に処理されると、その行は削除されます。そうでない場合は、後日再試行されます。何回か失敗すると削除されます。削除はテーブルの主キーを使用し、単純です。つまり、low_priority、quick、または無視を指定しません。プログラムは、読み取りと書き込みに別々の接続を使用します。
処理が必要な行の次のポーリングで、削除されたレコードが返されることがあります。これは、再試行制限に達したために削除された行でのみ発生するようです。さらに驚くべきことに、次のポーリングで何も返されず、その後のポーリングで削除された行が返されることがあります。
これは、読み取りと書き込みに異なる接続を使用することに関連していますか? myisam は削除にテーブル ロックを使用していると思っていたので、すべての接続で削除がすぐに尊重されることを期待していました。
mysql - rsync および MyISAM テーブル
rsync を使用して MySQL データをバックアップしようとしています。テーブルは MyISAM ストレージ エンジンを使用します。
私の期待は、最初の rsync の後、その後の rsync が非常に高速になることでした。テーブル データが変更された場合、操作が大幅に遅くなることが判明しました。
実際のデータを含む 989 MB の MYD ファイルで実験を行いました。
テスト 1 - 変更されていないデータの再コピー
rsync -a orig.MYD copy.MYD
- 予想通り時間がかかる
rsync -a orig.MYD copy.MYD
- 瞬時 - スピードアップは数百万単位
テスト 2 - わずかに変更されたデータの再コピー
rsync -a orig.MYD copy.MYD
- 予想通り時間がかかる
UPDATE table SET counter = counter + 1 WHERE id = 12345
rsync -a orig.MYD copy.MYD
- 元のコピーと同じくらい時間がかかります!
何を与える?小さな変更をコピーするだけで rsync が永遠にかかるのはなぜですか?
編集: 実際、テスト 2 の 2 番目の rsync は最初の rsync と同じくらい時間がかかります。rsync は明らかにファイル全体を再度コピーしています。
編集:ローカルからローカルにコピーすると、 --whole-file が暗示されます。--no-whole-file を使用しても、パフォーマンスは依然としてひどいものです。
mysql - MyISAM の key_buffer_size に相当する InnoDB は何ですか?
MyISAM を使用する場合、構成設定key_buffer_size
は、MySQL が頻繁に使用されるインデックス データのブロックをキャッシュするグローバル バッファのサイズを定義します。
InnoDB の対応する設定は何ですか?