以下の分析を見て、2 つのうち最適なデータベース設計 (InnoDB) を教えてください。要件 - 指数関数的に増加すると予想される多数の同時 DB 接続が存在する場合に、ユーザーが待機する必要のない高速な書き込みと読み取り。ユーザーが待たなければならない場合、ディスク容量の利点は関係ありません。
仮定 – 単一の CPU (比較用)
方法 1 (M1) Table1 UserProfile -> UserID、都市、州、国
Method2 (M2) (正規化) Table2a UserProfile->UserID,LocationsID Table2b Locations-> LocationsID, City, State, Country
書く(順番がバラバラ)
を。テーブルに書き込む
M1-Direct Write= t1 M2-(Table2b を検索してレコードの存在を確認する=t2+ 一致しない場合は挿入する=t1 Table 2a に UserID と LocationsID を書き込む=t3) (t1+t2+t3) > t1
b.CPU 割り込み
M1=1、M2=2
c.ディスク I/O
M1=1、M2=2
d.ロウロック&リリース
M1=1、M2=2
e. ディスクスペース
M1=多い、M2=少ない(M2のアドバンテージのみ)
読み取り (レコードがキャッシュにないと仮定)
を。テーブルから読み取る
M1-直読=t4、M2-Join-t5 t5>t4
b. CPU 割り込み
M1=1、M2=2
c.ディスク I/O
M1=1、M2=2
Table2b が事前に設定されている場合、または国、州、都市のドロップダウンが数値でタグ付けされている場合、Method2 で費やされる時間を改善できると思います。ロードバランスしてもM1は魅力的なデザインになりそうです。BW を増やすと、同時 DB 接続が増えるため、状況が悪化する可能性があります。あなたの考えを聞かせてください