現在、2種類のテーブルにmysqlを使用しています。大規模な参照テーブル用のmysqlの代替方法
最初のセットは、トランザクションベースの典型的なテーブルです。
第2のテーブルは、通常1回書き込まれ、何度も読み込まれる履歴データを格納するテーブルです。それらは大きく、数億またはそれ以上の行があり、インデックスがいくつかあります。
これらの表にはいくつか問題があります。
- 任意のスキーマの変更は永遠に
- 取る私たちは、テーブル全体が単一障害点であるに慣れていませんよ。何かがうまくいかない場合、このテーブルを再構築するには年月がかかるでしょう。
- それはスケーラブルでいないよう
は、我々はそれがこれらの問題を緩和するだろう欠けているのMySQLのすべての機能はありますか? MariaDBにはテーブル全体をロックしない列を追加する方法があることがわかりましたが、他の問題は解決しません。
私たちは、問題を解決する可能性のある他の製品も利用しています。何か案は?
履歴テーブルに列を追加する理由は、今後新しい情報を保存する必要があるためです。この新しいデータのために新しいテーブルを追加する問題は、比較的大きなキーを格納することになります(3つのvarcharカラムと日付カラムが主キーを作成します) – bpeikes
何百万という 'NULLs 'もスペースをとります。 (与えられたスペースはあまりありません)それはトレードオフです。あなたは、既存の歴史のための 'SHOW CREATE TABLE'と新しい列の定義を提供することに気をつけますか?それは、私たちがデータのタイプと「比較的大きな」PKを感じるのに役立ちます。助ける他のヒントがあるかもしれません。 –