如果一张表数据很大,将分表拆分数据,或者预估数据量很大,会预先生成很多分表,那么,日后要改字段,岂不是每张表都是执行同样的 sql 改字段?
MySQL 还有分区的概念,就是解决一张表数据量过大的,为什么现实开发中还是普遍使用分表的方式?
PHP中文网2017-04-17 16:28:13
データベースにしても、各種プログラミングモデルにしても、0結合がベストというわけではないと思います。適切な冗長性により、パフォーマンス、可読性、保守性が向上します。
ringa_lee2017-04-17 16:28:13
私の個人的な意見では、パーティショニングではテーブルを分割するためのルールを指定する必要がありますが、これは比較的厳格です。テーブル シャーディングは、ビジネス ロジック層上のホット データを柔軟にシャーディングできます。
黄舟2017-04-17 16:28:13
テーブルの容量は依然として制限されています。データが多くなると、挿入するたびに、対応するパーティションを見つけて挿入する必要があります。インデックスが大きくなり、挿入速度が低下します。
テーブル分割のデメリットについては、もちろん、フィールドを変更する必要がある場合は、すべてのテーブルでそれを行う必要があると述べましたが、その可能性は低く、以前のデータはデータは履歴になります。すべてのデータをテーブルに配置すると、テーブル構造を変更するとテーブルがロックされませんか?この側面から、サブテーブルは読み取りと書き込みの分離も実現できます。もう 1 つの欠点は、クエリには union table が必要であり、while を使用して sql を結合する必要があることですが、これは少し面倒であり、パーティションを結合する必要がないことです。 。 。
実際には、シャード テーブルとパーティションは結合されることが多く 、それぞれが互いに補完します。