-
MySQLは数十億行に対して合理的にクエリを実行できますか? --MySQLは数十億行を「処理」できます。 「合理的に」はクエリによって異なります。それらを見てみましょう。
-
InnoDB(MySQL 5.5.8)は、数十億行の正しい選択ですか? --5.7にはいくつかの改善がありますが、
ほぼ6であるにもかかわらず、5.5はかなり良いです。 8歳で、の危機に瀕しているサポートされなくなりました。 -
数十億行に最適なデータストア-「エンジン」を意味する場合は、InnoDB。
-
パフォーマンスが低下し始める前にMySQLデータベースをどれだけ大きくすることができますか-繰り返しますが、それはクエリによって異なります。メルトダウンする1K行のテーブルをお見せします。私は何十億列ものテーブルを使って仕事をしてきました。
-
大きなテーブルでMySQLが遅くなるのはなぜですか? -範囲スキャンはI/Oにつながりますが、これは遅い部分です。
-
Mysqlは約3億レコードを保持するテーブルを処理できますか? -繰り返しますが、はい。制限は約1兆行です。
-
(私の場合はInnoDBテーブルの場合)innodb_buffer_pool_sizeを増やします(たとえば、RAMの最大80%)。また、ここPerconaブログで他のMySQLパフォーマンス調整設定を見つけました-はい
-
テーブルに適切なインデックスを設定する(クエリでEXPLAINを使用)-さて、それらを見てみましょう。このクリティカルでは多くの間違いを犯す可能性があります エリア。
-
テーブルの分割-「分割は万能薬ではありません!」 私のブログでそれをハープします
-
MySQLシャーディング-現在これはDIYです
-
MySQLクラスタリング-現在、最良の答えは、Galeraベースのオプション(PXC、MariaDB 10、DIY w / Oracle)です。オラクルの「グループレプリケーション」は実行可能な候補です。
-
パーティショニングは
FOREIGN KEY
をサポートしていません または「グローバル」UNIQUE
。 -
あなたが話している規模のUUIDは、システムの速度を低下させるだけでなく、実際にシステムを強制終了します。 タイプ1UUID 回避策になる可能性があります。
-
挿入とインデックス作成の速度-バリエーションが多すぎるため、1つの答えを出すことはできません。暫定的な
CREATE TABLE
を見てみましょう とデータをどのようにフィードするつもりか。 -
多くの結合-「正規化しますが、過度に正規化しないでください。」特に、日時やフロート、その他の「連続的な」値を正規化しないでください。
-
1日あたり230万件のトランザクション-それが230万件の場合挿入 (30 /秒)、パフォーマンスの問題はあまりありません。より複雑な場合は、RAID、SSD、バッチ処理などが必要になる場合があります。
-
このような大量のデータを処理する-ほとんどのアクティビティが「最近の」行である場合、buffer_poolはアクティビティを適切に「キャッシュ」し、それによってI/Oを回避します。アクティビティが「ランダム」の場合、MySQL(または誰でも それ以外の場合)I/Oの問題が発生します。
-
データ型を縮小すると、あなたのようなテーブルに役立ちます。
fuel_type
を指定するのに4バイトが必要かどうかは疑問です 。 1バイトのアプローチは複数あります。