タグ付けされた質問 「myisam」

MyISAMは、MySQLの非トランザクションストレージエンジンです。高速な保存と検索、および全文検索機能を提供します。さらに、これは、MySQL 5.5より前のバージョンのデフォルトのストレージエンジンタイプです。

2
インデックス付き日時列を使用したMySQLパフォーマンスの問題
次の問題を約1時間解決しようとしましたが、それでも解決できませんでした。 さて、テーブルがあります(MyISAM): +---------+-------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | http | smallint(3) | YES | MUL | 200 | | | elapsed | float(6,3) | NO | | …

4
MySQLのLOAD DATA INFILEは、InnoDBエンジンでの入力のいくつかのギグの後、80%遅くなります
LOAD DATA INFILEを介して100GBのファイルをロードしています。私はMyISAMで数時間成功しました。 私は今InnoDBを使って試しています。ロードは10MB /秒以上で高速に開始されます(テーブルファイルの増大を監視し、file_per_tableオンになっています)。 しかし、約5 GBのデータの後、2〜4 MB /秒の範囲に低下します。20GBを超えると、約2 MB /秒になりました。 InnoDBバッファープールのサイズは8Gです。そして、LOAD DATA INFILEコマンドを実行する前に次のことを行いました。 SET @@session.sql_log_bin=0; SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; alter table item_load disable keys; //Run LOAD DATA INFILE.... 開始が順調に進み、時間がたつにつれて速度が低下している理由がわかりません。 また、同じ設定を使用して、InnoDBとMyISAMおよび5GBテストデータセットを使用したテーブルで同じLOAD DATA INFILEコマンドを実行すると、MyISAMは20倍高速になりました。 InnoDB: mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load; Query OK, 2630886 …

2
MySQLがディスク上に非常に多くの一時テーブルを作成しているのはなぜですか?
構成の間違いにより、mysql..mysqlチューナーショーで一時テーブルが多くなりすぎる可能性があります Current max_heap_table_size = 200 M Current tmp_table_size = 200 M Of 17158 temp tables, 30% were created on disk table_open_cache = 125 tables table_definition_cache = 256 tables You have a total of 97 tables You have 125 open tables. Current table_cache hit rate is 3% 以前の一時テーブルは「23725個の一時テーブルのうち38%がディスク上に作成されたもの」でしたが、max_heapとtmp_tableを16mから200mに変更し、30%に下げました。 構成: engine myisam …
13 mysql  innodb  myisam  memory 

5
同じ物理サーバーでレプリケーションを実行するのは賢明ではありませんか?
データベースのマスタースレーブレプリケーションのセットアップを検討しています。スレーブサーバーは冗長性のために使用され、場合によってはレポートサーバーとして使用されます。しかし、私が直面している最大の問題の1つは、データセンターのパワーがすでに限界に達していることです。そのため、別の物理サーバーを追加することはオプションではありません。 既存のデータベースサーバーは、CPUに関しては十分に活用されていません(クアッドコアで平均負荷が1を超えることはありません)。そのため、主要なアイデアは、いくつかの新しいドライブをトスし、メモリを2倍(8GBから16)にして、同じ物理マシンで2番目のmysqlインスタンスを実行することです。各インスタンスには、データベース用に個別のディスクがあります。 この考えに何か問題はありますか? 編集(詳細):私は(幸運にも)サーバーを停止するほど悪いことは一度もありませんでしたが、前もって計画しようとしています。もちろん、夜間にバックアップを作成して、そこから回復できます。ただし、マスターサーバーのドライブに障害が発生した場合(マシン全体が停止した場合は明らかにそうではない)、冗長データを別のディスクに保存すると、より迅速なソリューションが得られると考えました。 レポートの側面に関しては、レポートするテーブルはすべてMyIsamです。そのため、書き込み中の同じテーブルで高価な読み取りを行うと、サーバーが動かなくなる可能性があります。私の想定では、CPU負荷がまだ問題になっていないため、十分なRAMを投入する限り、スレーブサーバーがメインサーバーに影響を及ぼさないと報告していました。


3
MySQLインスタンスが「同期インデックスを実行中」にストールする
問題 InnoDBテーブルを持つデータベースを実行する(ほとんどの場合)MySQL 5.6.20のインスタンスは、すべてのINSERT、UPDATE、およびDELETEクエリが「クエリ終了」状態のままで、1〜4分間、すべての更新操作に対して時々ストールします。これは明らかに最も不幸なことです。MySQLのスロークエリログは、非常に些細なクエリでさえ、異常なクエリ時間を記録しています。何百ものものが、失速が解決された時点に対応する同じタイムスタンプで記録されます。 # Query_time: 101.743589 Lock_time: 0.000437 Rows_sent: 0 Rows_examined: 0 SET timestamp=1409573952; INSERT INTO sessions (redirect_login2, data, hostname, fk_users_primary, fk_users, id_sessions, timestamp) VALUES (NULL, NULL, '192.168.10.151', NULL, 'anonymous', '64ef367018099de4d4183ffa3bc0848a', '1409573850'); デバイス統計は増加していますが、この時間枠ではI / Oの負荷は過剰ではありません(この場合、上記のステートメントのタイムスタンプによると、更新は14:17:30から14:19:12に失速しました)。 # sar -d [...] 02:15:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util …

1
頻繁にクエリされる100,000レコードのMySQLテーブル
私はさまざまな種類の情報を格納するために、約100個のテーブルの単一のデータベースを持っています。 最も重要なテーブルは、顧客の注文を格納するために使用される注文テーブルであり、現在および増加している現在では10万件を超えるレコードです。 このテーブルは、リアルタイム注文ダッシュボード、統計、分析などから必要な情報のさまざまな部分について、データベースで最もクエリの多いテーブルです。 私は定期的にデータベースを監視しており、問題を追跡するためにデータベースで遅いクエリを有効にしています。 私はmysqltunerのようなスクリプトを使用して、毎日クエリを吐き出しています。 また、mysqlslaを使用して、データベース内の最も遅い10個のクエリに関する情報を収集します。 sample stat Count : 11.48k (30.66%) Time : 19.623758 s total, 1.709 ms avg, 239 µs to 2.475017 s max (18.64%) 95% of Time : 5.246833 s total, 481 µs avg, 239 µs to 1.095 ms max Lock Time (s) : 14.460071 s total, …

2
MyISAMからInnoDBに変換する際の問題点はありますか?
MyISAMからInnoDBに移行する準備ができていますが、探すべき項目の完全なリストがあるかどうか知りたいですか?たとえばDISABLE KEYS、のマニュアルページを除いて、InnoDBテーブルで実行すると警告がスローされることについて言及しているリストはありませんALTER TABLE。変換する前に知っておくべきことです。私は自分のクエリで大丈夫だと思いましたが、どうやらそうではありません。
11 mysql  innodb  myisam 

2
空のテーブルを削除する方法
私の巨大なデータベース(mysql)からすべての空のテーブルを削除することは可能ですか? 空のテーブルをすべて自動的に削除するsqlコマンドを探しています。 現在、データセットには305のテーブルがあり、そのうちの約30%は古い空のテーブルであり、新しいアプリケーションでは使用されません。 明確にするために; すべてのテーブルはtype = MyISAMです。
11 mysql  myisam 

4
mysqldumpを使用して500GBデータベースの高速バックアップと復元を増やす方法は?
500GBのデータベースAサイズがあります。データベースAのテーブルには、MyISAMテーブルとINNODBテーブルの両方が含まれています。MyISAMテーブルはマスターテーブルで、Innodbテーブルはメイントランザクションテーブルです。 mysqlダンプを使用してバックアップと復元を行うと、長時間または数日で終了します。 max_allowed_pa​​cket = 1G foreign_key_checks = 0 auto_commit =オフ

1
全文検索でLIKEよりも少ない行が返される理由
全文検索が期待どおりに機能せず、結果リストの違いがわかりません。 ステートメントの例: SELECT `meldungstext` FROM `artikel` WHERE `meldungstext` LIKE '%punkt%' 92行を返します。たとえば、 "Punkten"、 "Zwei-Punkte-Vorsprung"、 "Treffpunkt"などの一致する行がmeldungstext列に表示されます。 「meldungstext」列にフルテキストインデックスを設定し、これを試しました。 SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*') これは8行のみを返します。「Punkt」自体に一致する行、または「i-Punkt」のように「Punkt」と見なされると思われる単語のみを受け取ります。 次にブールモードを試しました: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*' IN BOOLEAN MODE) 44行を返します。meldungstext列に「Zwei-Punkte-Vorsprung」または「Treffpunkt」を含む行が表示されますが、「Punkten」の行は表示されません。 なぜこれが発生し、「完全に」機能する全文検索を設定して、where句でLIKE '%%'を使用しないようにするにはどうすればよいですか?

2
クエリがテーブルレベルのロックを待機しないようにする方法
お客様のデータベースを追加のサーバーに移動した後、問題が発生しました。これはサイトのパフォーマンスにプラスの影響を与えるはずでしたが、MyISAMのテーブルロックに問題があります。(MyISAMの代わりにInnoDBを使用することを聞いたことがありますが、近い将来エンジンを変更することはできません)。 モデレーターが記事サイトのコメントをアクティブ化するときに実行されるupdate-queryにそれを見つけることができます。これはプロセスです: update-queryが処理されます SET status = 1 WHERE id = 5(インデックスが設定されます) ページのキャッシュファイルが削除されます この時点で、ページ全体が遅くなります。データベース自体は数分間ビジーです。私はプロセスリストを数回フェッチし、さまざまな選択クエリの約60のエントリを確認しました。これらはすべて、テーブルレベルのロックを待機している状態でした。 1.テーブルに対するこの更新が、テーブルレベルのロックを待機するテーブルのarticle_commentsselect-statementsに影響を与える理由がわかりませんarticle。プロセスリストでは、待機中のほとんどすべてのクエリがこのテーブルからのものでした。selectよりもupdate / insertが優先され、これがそのような問題を引き起こす可能性があるという事実を読みましたが、記事テーブル自体はコメントがアクティブになっても更新されないので、selectは待つべきではありません。私はそれを誤解しましたか? 2.この動作を防止するため、または少なくともより良いバランスを得るために、InnoDBに変更する以外に何かありますか?データベースを新しいサーバーに移動する前にこの問題が発生しなかったという事実に非常に苛立ちました。いくつかの設定ミスがあると思いますが、特定する方法がわかりません。

2
Debianで単一のMySQLクエリに複数のコアを使用する
ゲストOSとしてDebianを使用するVM(VMWare)でテスト用のMySQLサーバーを実行しています。ゲストには4つのエミュレートされたCPUコアがあるため、thread_concurrencyを4に設定しました。 数分かかる可能性のある大きなテーブルで高価な結合を行っていますが、ゲストOSで一度に使用されるコアは1つだけです。これは、関係するテーブルに使用されているストレージエンジンに関係なく発生します(MyISAMおよびInnoDBでテスト済み)。さらに、これらの大きなクエリを実行すると、データベース全体がブロックされているように見えるため、追加のクエリを並行して実行することはできません。奇妙なことに、htopは、クエリに使用されるコアがクエリの実行中に変化することを示しています! なぜこれが起こるのですか? これは関連するエントリですSHOW FULL PROCESSLIST;(他のクエリはありません)。 | 153 | root | localhost | pulse_stocks | Query | 50 | Copying to tmp table | SELECT DISTINCT * FROM `pulse_stocks`.`stocks` sto, `pulse_new`.`security` sec WHERE (sto.excntry = sec.excntry AND sto.stock_id = sec.ibtic) OR ( sto.isin = sec.isin AND sto.isin <> "" AND …

1
使用中のマスター/スレーブ複製システムで単一のmysqlデータベースを回復する
忙しいレプリケートされたシステムで単一のデータベースを特定の時点にリカバリするための戦略またはツールを探しています。 マスタースレーブ複製構成の2つのMySQL 5.0.77サーバーで実行されている12のデータベースがあります。読み取り専用スレーブのフルダンプが毎日取得され、これらのバックアップがオフサイトにある増分SQLダンプが利用可能であり、レプリケーションステータスが監視されます。 編集:テーブルはInnoDBとmyISAMの混合であるため、エンジン固有のソリューションは利用できません。 したがって、マスターサーバーに完全な障害が発生した場合、レプリケーションを中断してスレーブサーバーを昇格させることができます。また、新しいサーバーを再構築してオフサイドのフルバックアップから構成し、スレーブから1時間ごとに取得した差分を適用することもできます。 ただし、部分的な障害、または単一のデータベースの障害に対処する方法を心配しています。かなりありそうな2つのシナリオを考えることができます。 データベース7(たとえば)が破損し、壊れていることに誰かが気付くまで、またはログファイルからアラートが出されるまで、いくつかの要求を処理し続けます... 「データベースの削除」、「テーブルの削除」、「更新場所...」タイプのクエリなどのクエリは、単一のデータベース、またはその一部のサブセットを作成します。 現時点では、FULL- $ DATE-all-databases.sql.gzファイルとしての一連のフルダンプと、DIFF- $ DATE-all-databases.sql.gzとしてフルダンプに適用できる差分があります。 データベース7を特定の時点に復元するには、FULLおよびDIFFファイルを介したgrepと、そのSQLの手動による適用が必要です。 マスターデータベースへの以前のDIFFダンプの1つに回復できるようにするには、どうすればよいですか? 個々のデータベースファイルにバックアップする必要がありますか? mysqldump --databases "database1" | gzip > database1.sql.gz mysqldump --databases "database2" | gzip > database2.sql.gz mysqldump --databases "database3" | gzip > database3.sql.gz のではなく.. mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz 個別のmysqldumpファイルを使用する場合、マスターデータのバイナリログはどうなりますか?マスターサーバーのリカバリダンプに--master-dataを設定する必要がありますか?

5
最適なsort_buffer_sizeを決定する方法は?
私は次のことを言うサンプル構成ファイルから読みました: # Sort buffer is used to perform sorts for some ORDER BY and GROUP BY # queries. If sorted data does not fit into the sort buffer, a disk # based merge sort is used instead - See the "Sort_merge_passes" # status variable. Allocated per thread if sort is …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.