私たちはmysqlを使用しています。私たちは10億行の巨大なテーブルを持っています。エンジンはInnoDBです。 50%SELECT、30%UPDATE、1分あたり20%パフォーマンスを向上させたいので、単一のテーブルを複数のテーブルに分割します。しかし分割することで、パフォーマンスは少し向上していないことがわかりました。どうして?スプリットテーブルがパフォーマンスを向上させるのは常識ですか?データをマルチテーブルに分割してもパフォーマンスが向上しないのはなぜですか?
サーバは、4コア、SCSI RAID 5ハードディスク、32GBのメモリです。ただ1つのサーバー。
は、あなたのユースケースについてより多くの情報が必要でしょう。私は通常、行を分割すると、最近のテーブル(レコードの数がはるかに少ない)とアーカイブテーブルがある場合にパフォーマンスが向上すると考えています。これは非常に稀です。あなたのクレジットカードをオンラインで見ることを考えている。最近の転記は表1にあり、表2はあなたの過去の履歴を最近過ぎてしまいます。最近はいつも見るのですが、歴史ははるかに少ないです。アーカイブを見る必要があるときは、何も改善していないことに注意してください。 – Prescott
この表は、ユーザーのサブスクリプション情報として使用されます。つまり、新しいユーザ(携帯電話番号)がサービスに加入した後、このテーブルに行を挿入します。ユーザーがすでにプラットフォームにいる場合は、テーブルを更新し、ユーザーがサービスの登録を解除したい場合は、そのユーザーのレコードも更新します。 – Gao
ユーザを挿入するには、2つのテーブルをチェックして、そのユーザが存在するかどうかを確認する必要がありますか?更新するには、両方のテーブルをチェックして、ユーザーが存在するかどうかを確認してから挿入しますか?どのようにテーブルを分割していますか?その方法は何ですか? – Prescott