問題タブ [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.
mysql - 定期的にデータをテーブルにロードする最良の方法は何ですか
CSV から毎週更新する必要がある静的テーブルを含むデータベースがあります。テーブルはMysql MyISAMであり、静的とは、読み取り専用に使用されることを意味します(明らかにCVSから更新された場合を除く)。
約 50 のテーブルがあり、合計で約 200 MB のデータが毎週再ロードされます。
私は3つの方法について考えることができます:
- テーブルの切り捨て
- ファイルからデータをロードする
または
- テーブルごとに一時テーブルを作成します
- そこにデータをロードする
- 元のテーブルを切り捨てます (または行を削除しますか?)
- 元のテーブルに挿入 * 一時テーブルから選択します。
または
- table_new を作成し、そこにデータをロードします
- 元のテーブルの名前を table_old に変更します (またはテーブルを完全に削除します)
- table_new の名前を元のテーブルに変更します
最も効率的な方法は何だと思いますか?
mysql - 多くの MySQL テーブルでフィールドを変更する
シナリオ: ユーザー名を変更できるようにしたいユーザーがいますが (サイトを開始したときは、残念ながらこの機能を追加することは考えていませんでした)、MySQL データベースには 110 個のテーブルがあります。
各テーブルのユーザー名を更新するために 110 個のクエリを実行するスクリプトを作成するだけでよいでしょうか (新しいテーブルを追加するときはスクリプトを更新することを忘れないでください)、またはすべてのテーブルのフィールドをリンクする方法はありますか?あるテーブルでユーザー名を更新すると、他のすべてのテーブルでそれが更新されますか?
mysql - MyISAM を InnoDB に変換します。有益?結果?
すべてのメンバーの行動 (他のメンバーのページへの訪問を含む) を記録するソーシャル ネットワーキング サイトを運営しています。これには、データベースへの多くの書き込みが含まれます。これらのアクションは MyISAM テーブルに保存され、何かが CPU に負担をかけ始めているため、CPU にこのストレスを引き起こしているのは MyISAM のテーブル ロックであると最初に考えました。
- 読み取りと書き込みのみがあり、このテーブルへの更新はありません。このテーブルの読み取りと書き込みのバランスは約 50/50 だと思います。したがって、InnoDB の方が良い選択肢でしょうか?
- テーブルを InnoDB に変更したいが、外部キー制約、トランザクション、またはフルテキスト インデックスを使用しない場合、何か心配する必要はありますか?
mysql - 読み取りロックを取得せずにmysqlでselectクエリを発行することは可能ですか?
mysql select content(たとえば、countではなく)クエリは、常に少なくともmyisamテーブルのテーブル読み取りロックとinnodbテーブルの行読み取りロックを取得するようです。ロックを取得せずに、mysqlでコンテンツ選択クエリを発行する方法はありますか(必要に応じてテーブルタイプを変更できます)?検索インデックスに使用するので、返されるデータに一貫性がなくてもかまいません。
mysql - MyISAMからInnoDBへの変換を高速化
実稼働環境にMySQL1.5GB MyISAMテーブル(1.0 GBデータ、0.5 GBインデックス)があり、これをInnoDBに変換しようとしています。
テーブルは本番環境で使用されるため、ダウンタイムをできるだけ短くしたいと思います。
私の質問:
スピードアップするには、どのMySQL構成オプションを調整する必要があります
ALTER TABLE table_name ENGINE=InnoDB;
か?MyISAMからInnoDBへの本番データベーステーブルの変換を高速化するために、他にどのようなトリックを使用できますか?
mysql - 1つのデータベース内のMyISAMテーブルとInnoDBテーブル
私は約30のテーブルを持つデータベースを持っており、そのうちの5つのテーブルは書き込みが集中します。
検討中
5つの書き込み集約型テーブルをInnoDBエンジンを使用するように変換し、残りをMyISAMエンジンに保持します
InnoDBエンジンを使用するようにすべてのテーブルを変換します。
どちらのアプローチが良いのだろうか?
具体的には
MyISAMエンジンにいくつかのテーブルを保持したい理由は、それらのいくつかには約1,000,000行があるからです。InnoDBに変換した後、これらのテーブルでの「SELECT COUNT(*)」のようなクエリの速度がどれほど遅くなるかはわかりません。
私はテストをしていません。切り替えを開始する前に、誰かからアドバイスをもらうことをお勧めします。
mysql - auto_increments を使用して MySQL の MyISAM テーブルを結合する
私は長い間 php を書いてきましたが、それは常に自分自身で学んだスキルであり、テーブル結合に対する自信の小さな危機に直面しました!
auth
MyISAM テーブルusers
とを含むMySQL データベースを想定しますpermissions
。
これらのテーブルを多対多 (または 1 対多) で結合するために、私は常にブリッジ テーブルを次のように使用してきました。
(innoDB がリレーションシップに対応できることは知っていますが、より複雑で、より多くのメモリを消費するため、q の目的のために、myISAM を使用したいと思います)
私の特定の質問はこれです:自動インクリメントキーを使用してテーブルを結合するのは賢明ですか、それとも独自の追加キーを生成する必要がありますか?
テーブルが破損して再構築する必要がある場合、または 2 つのデータベースへのミラーリングを開始してキーが同期しなくなった場合に、問題が発生する可能性があることを認識しています。
また、行ごとに一意のハッシュを生成すると (結合で使用される)、ハッシュを生成し、すべてのデータを挿入する前にそれが新しいことを確認するオーバーヘッドがあることも認識しています。
他の人はどのようにしていますか?これらの問題は、実際の状況で見たものですか?
御時間ありがとうございます!
アダム
mysql - MySQL のバグ? 「SHOW TABLE STATUS」は、インポート中に変動する行数を報告します
データベースのサブセットを分析するために、410 万件のレコードをオフライン システムにインポートしています。インポートを実行しているので、次を使用して進行状況を確認しようとしています。
奇妙なことに...さまざまな時期に、 の値が高くなったり低くなったりしていますRows
。私はそれが上がることだけを期待します。出力のサンプルを次に示します。
この動作の説明はありますか? インポートの進行状況を確認するより良い方法はありますか?
次のバージョンを実行しています: サーバーのバージョン: 5.0.32-Debian_7etch11-log Debian etch ディストリビューション
編集:
これがDDLです。MyISAM テーブルです。
前もって感謝します、
-aj
mysql - Keeping data plus index-data in memory - InnoDB vs. MyISAM
Assume a database consisting of 1 GB of data and 1 GB of index data.
To minimize disk IO and hence maximize performance I want to allocate memory to MySQL so that the entire dataset including indexes can be kept in RAM (assume that the machine has RAM in abundance).
The InnoDB parameter innodb_buffer_pool_size
is used to specify the size of the memory buffer InnoDB uses to cache data and indexes of its tables. (Note: The memory is used for data AND indexes.)
The MyISAM parameter key_buffer_size
is used to specify the size of the memory buffer MyISAM uses to cache indexes of its tables. (Note: The memory is used ONLY for indexes.)
If I want the 2 GB database (1 GB data and 1 GB index) to fit into memory under InnoDB, I'd simply configure the innodb_buffer_pool_size
to be 2GB
. The two gigabytes will hold both the data and the index.
However, when setting the MyISAM key key_buffer_size
to 2GB
that space will be used for the index, but not for the data.
My questions are:
- Can MyISAM's "data buffer size" (not index data) be configured explicitly?
- When will MyISAM read table data (excluding index data) from disk and when will it read from memory?
mysql - テーブルを InnoDB に変換するとき、どのような問題に注意する必要がありますか?
liferay のインストールが突然 (コードの変更なしで) 「重複した ID」エラーで失敗するという問題が発生しています。この問題は、mysql エンジンを InnoDB に変更することで解決できる可能性があることを確認しました。
現在、変更を計画していますが、その過程でどのような合併症が発生する可能性があるかはわかりません。
この質問で言及されている全文索引を確認しました
他に考えられる問題はありますか