新しいテーブルを作成するために10,000,000以上の行を持つデータベーステーブルがあります。読書に最適なストレージエンジンは何ですか?10,000,000行のデータベースに最適なストレージエンジン
現在、私が使用します。
$sql = "UPDATE `packages_unsorted` SET `acv_return_viadetails` = '0';";
その後、レコードを選択する:
$sql = "SELECT * FROM `packages_unsorted` WHERE `acv_return_viadetails` = '0' LIMIT 1000;";
私は$ IDSと呼ばれる配列にid
主キーを収集し、私はレコードを処理し、にデータを書き込みます各1000行の最後にインポート用のCSVファイル。 私は、その後でacv_return_viadetailsフィールドを更新:上記の表にのみ書き込みがあると私はすべてのフィールドごとの時間を選択すると
$sql = "UPDATE `packages_unsorted` SET `acv_return_viadetails` = '1' WHERE `id` IN ('".implode("','",$ids)."') LIMIT 1000;";
。メモリテーブルや他のタイプのストレージエンジンを使用して物事をより速くする必要がありますか?または、私は物事をスピードアップするために導入できる他の最適化はありますか?
また、このような操作のための合理的なmy.cnf構成は何でしょうか。あなたはacv_return_viadetailsフィールドにインデックスを事前に
感謝:)
あなたのMySQLの設定を調整するには高度な技術を探しているなら、私は非常にお勧めします:あなたは、次の代わりに使用して
acv_return_viadetails
ような何かを試すことができ3) /あなたができるすべての微調整を決定する。なぜInnoDbを使うだけで、 'acv_return_viadetails'に' INDEX'が付いているのかわかりません。たぶん、データセットについて少し分かっていれば、それを小さなテーブルに分割したり、データを再編成したりするのは理にかなっているかもしれません。 –
ありがとう、私はInnodbを試してみますが、実際にはデータを分割することはできません。なぜなら、LOAD DATA INFILEを使って直接CSVをインポートするからです。約90フィールド* 10M行です。 –
innodb - クラスタ化された主キーはこちらhttp://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 –