4

それぞれ 2,000 万行を超える行を持つ 3 つのテーブルを含むデータベースがあります。主キーとして GUID を使用しました (残念ながら)。現在、データベースは約 20 GB で、毎月 5 GB ずつ増えています。

データベースのフル バックアップを作成するのに約 2 時間、4GB RAM のボックスで復元するのに 30 時間かかります。

データベースのすべてのテーブルが消えたことがあります。同じサーバー内の他のmysqlデータベースは、1つを除いて問題ありませんでした-データのみが消え、空のテーブルが残りました。

選択クエリ (多くの遅いクエリの中でも) - 20m のテーブルのいずれかで最大の日付列を取得すると、結果が返されるまでに約 5 分かかります。このクエリはかなり頻繁に使用されます。

私が探している答え

  1. 推奨されるデータベース設計の変更
  2. 選択クエリのパフォーマンスを改善する方法 - 20m レコードの最大日付列
  3. 他のクエリのパフォーマンス
  4. 将来のデータベースの成長を処理する方法

ご清聴ありがとうございました。

4

4 に答える 4

1

より大きなサイズのセットアップ (InnoDBストレージ エンジンGUIDとして、主キーとして a を使用) を見たことがありますが、そのような問題はありませんでした。

データベースのすべてのテーブルが消えたことがあります。同じサーバー内の他のmysqlデータベースは、1つを除いて問題ありませんでした-データのみが消え、空のテーブルが残りました。

LSNシステムが各ページの を下回った場合、テーブルが空に見えることがありますLSNInnoDBこれは、ログファイルが破損している場合に発生することがあります。InnoDBただし、この場合は警告が発行されます。

選択クエリ (多くの遅いクエリの中でも) - 20m のテーブルの 1 つで最大の日付列を取得すると、結果が返されるまでに約 5 分かかります。このクエリはかなり頻繁に使用されます。

この列にインデックスを作成すると、クエリが即座に実行されます。

正確なクエリを投稿してください。最適なインデックスを作成する方法をお伝えします。

設計自体に問題はないDBと思いますが、おそらくサーバーに問題があると思われます。

バニラをクリーンMySQLインストールした別のサーバーでこの動作を再現することは可能ですか?

テーブル間でデータを分割することもできます。バックアップから設定innodb_file_per_tableおよび復元します。

于 2009-11-08T18:24:37.427 に答える
1

innodb ホット バックアップの無料の代替手段はPercona XtraBackup Toolです。

于 2009-12-25T03:03:29.603 に答える
0

バックアップには、innodb ホット バックアップツールを使用できます。これにより、データベースが稼働している間に一貫性のあるバックアップを実行できるだけでなく、復元が実行中よりもはるかに高速になります (mysqldump を想定していますか?)。お金はかかります。

于 2009-11-08T18:59:24.313 に答える