0
  • 私は大学の学部生で、PHPおよびMySQLベースの在庫管理システムを全国レベルで運用しています。そのデータベースサイズは、現在のサイズが約200万で、毎月約100万以上のエントリが増加すると予測されています。
  • 現在、ほとんどのモジュールで7〜11秒の範囲にあるクエリ時間の指数関数的な増加を防ぐ必要があります。

  • 問題は、先月入力されたデータにアクセスする確率が、古いデータと比較してはるかに高いということです。したがって、データ入力の時間に基づいてデータを分割することで、クエリ時間を抑えることができるはずです。では、どうすればこれを達成できますか。

  • 具体的には、先月のデータをキャッシュして、すべてのクエリが最近のデータを含むテーブルで製品を検索し、過去1か月のデータで見つからない場合に備えて残りのデータを検索する方法が必要です。

4

1 に答える 1

0

MySQLのパーティショニング機能を使用したい場合は、この記事を参照してください。

そうは言っても、パーティションを使用する場合はいくつかの制限があります。

  • パーティションキーにないインデックスを持つことはできません
  • パーティショニングは他のデータベースとはまったく異なる動作をするため、データベースの移植性が失われます。

古いレコードを定期的にアーカイブテーブルに移動することで、パーティション分割を手動で処理することもできます。もちろん、これらのアーカイブされたレコードを読み取るには、別のコードも実装する必要があります。

また、クエリ時間はかなり長いように思われることにも注意してください。私は、アクセス時間がはるかに長い200万レコードをはるかに超えるテーブルで作業しました。

于 2012-08-12T21:58:03.427 に答える