私はデータベース システム設計の初心者です。多くの記事を読んだ後、シャーディングやパーティション化を行わずに 1 つのテーブルを持つ必要がある制限は何なのか、本当に混乱しました。一般的な答えを提供するのが非常に難しいことは承知しています。物事は
などの要因によって異なります。10 億のデータと数百万の行が毎日追加されたらどうしますか?このような大規模なデータベースの場合、4 回の読み取り、1 回の書き込み、2 回の更新クエリの待ち時間は 5 ミリ秒未満である必要があります。
注: 質問では遅延番号について言及しませんでした。お願いします 許容できる遅延の数に基づいて回答してください。また、構造化データについても話しています。
よくわかりませんが、具体的な質問を 3 つ追加できます:
Amazon またはその他の電子商取引注文管理システム用の SQL データベースを選択するとします。注文数は毎日数百万件ずつ増加しています。すでに10億件のレコードがあります。ここで、データ アーカイブが存在しないと仮定します。 1 秒あたり 1000 クエリを超える大量の読み取りクエリ。そして、また書かれています。読み取り:書き込み比率は 100:1
ベンチマークが何なのかを理解するのを手伝ってくれる人はいますか?現在取り組んでいるプロジェクトの実数値を見ると、非常に多くのクエリを含む大規模なデータベースで、これが観測される遅延であることがわかります。特定のレイテンシーにおける特定の数のクエリに対する選択テーブルの数を正当化するのに役立つものはすべてあります。
P粉4019012662024-01-17 09:55:18
MySQL に関するいくつかの回答。すべてのデータベースはディスク容量、ネットワーク遅延などの影響を受けるため、他のエンジンも同様である可能性があります。
SELECT
を作成することも可能です。したがって、クエリがこのように病的であるかどうかを理解する必要があります。 (これは「遅延」が大きい例だと思います。) PARTITIONing
(特に MySQL では) の用途はほとんどありません。詳細: パーティションINDEX
はパフォーマンスにとって非常に重要です。 1 日に
100 万行を挿入しても問題はありません。 (もちろん、一部のスキーマ設計によってはこの問題が発生する可能性があります。) 経験則: 100/秒は問題ないかもしれませんが、1000/秒は可能かもしれませんが、それを超えると難しくなります。 #高速取り込みの詳細
SPATIAL
、または何らかのテクニックが必要です ここで