mysql表
1797 ワード
分表理由 mysql sql実行sqlのプロセス(説明のために便利) mysalq sql解析sql(sql構文のチェックなどを含む) sqlをキュー待ちキュー に入れる実行sql 応答返信結果
この過程で最も時間がかかるステップは,やはりキュー待ち時間ステップ(2)とsql実行時間ステップ(3)であり,実はこの2つのステップは同じである.実行が速く、待ち時間が少なくなります.テーブルのロックメカニズムの目的は、データの完全性を保証することである.myisam engineは主にテーブルレベルロックinnodb engineは主に行レベルロック このような需要があると仮定して、2つのsql文が同じテーブルの同じデータを実行しますが、この場合どうしますか?
テーブルのロックは、このテーブルを操作できないことを示しています.私がテーブルを操作するのを待たなければなりません.行ロックも同様で、他のsqlは私がこのデータを操作するのを待たなければなりません.データが多すぎると、一度に実行する時間が長すぎるほど、待ち時間が長くなります.データ量mysql性能MySQLの1つのテーブルの総記録数が1000万を超えると、性能の大幅な低下が現れますか?答えは肯定的だ.しかし、パフォーマンスの低下率は、システムのアーキテクチャ、アプリケーション、データベースインデックス、サーバハードウェアなど、さまざまな要因によって異なります.データベースは億以上のデータ量に達し、分表後の単一テーブルも千万を突破し、単一テーブルの更新などはシステムの稼働効率に影響を及ぼしている.単純なSQLでも、テーブル全体のフィールドのソート操作など、データベース全体を潰す可能性があります.以上の理由に基づいて、大量データの最適化には主に2つの方法がある:大表が小表を分解する方式、SQL文の最適化.
SQL文の最適化:インデックスなどを増やすことで調整できますが、データ量の増加によりインデックスのメンテナンスコストが増加します.ここでは詳しくはありませんが、「High Performance MySQL」などの本を参考にすることをお勧めします.
ぶんひょうほうしき
1、垂直方向の表:
垂直分割テーブルについては、N 1+N 2フィールドのテーブルTabをN 1フィールドのサブテーブルTab 1と(N 2+1)フィールドのサブテーブルTab 2に分割する.サブテーブルTab 2には、サブテーブルTab 1に関するプライマリ・キー情報が含まれています.そうしないと、2つのテーブルの関連関係が失われます.もちろん、垂直分割テーブルはプログラム側SQLの修正をもたらします.アプリケーションが長い間適用されている場合、プログラムのアップグレードは時間がかかり、エラーが発生しやすくなります.つまり、アップグレードの代価は大きくなります.
2、水平表:
水平パーティション技術は1つのテーブルを複数のテーブルに分解し、比較的よく使われる方法は、テーブルの記録をあるHashアルゴリズムに従って分割することであり、簡単な分割方法、例えば型取り方式である.同様に、このパーティション化方法は、フロントエンドのアプリケーションのSQLを変更して使用する必要があります.また、SQLの場合、2つのテーブルを変更する可能性があります.2つのSQL文を書く必要があります.これにより、論理的なトランザクションを完了することができ、プログラムの判断ロジックが複雑になります.これにより、プログラムのメンテナンスコストが高くなり、データベースを採用するメリットもなくなります.従って、パーティション化技術は、上記のような弊害を強力に回避し、大量のデータストレージを解決する有力な方法となる.
まとめ
資料を参照する.http://blog.csdn.net/ithomer/article/details/5136982
この過程で最も時間がかかるステップは,やはりキュー待ち時間ステップ(2)とsql実行時間ステップ(3)であり,実はこの2つのステップは同じである.実行が速く、待ち時間が少なくなります.
テーブルのロックは、このテーブルを操作できないことを示しています.私がテーブルを操作するのを待たなければなりません.行ロックも同様で、他のsqlは私がこのデータを操作するのを待たなければなりません.データが多すぎると、一度に実行する時間が長すぎるほど、待ち時間が長くなります.
SQL文の最適化:インデックスなどを増やすことで調整できますが、データ量の増加によりインデックスのメンテナンスコストが増加します.ここでは詳しくはありませんが、「High Performance MySQL」などの本を参考にすることをお勧めします.
ぶんひょうほうしき
1、垂直方向の表:
垂直分割テーブルについては、N 1+N 2フィールドのテーブルTabをN 1フィールドのサブテーブルTab 1と(N 2+1)フィールドのサブテーブルTab 2に分割する.サブテーブルTab 2には、サブテーブルTab 1に関するプライマリ・キー情報が含まれています.そうしないと、2つのテーブルの関連関係が失われます.もちろん、垂直分割テーブルはプログラム側SQLの修正をもたらします.アプリケーションが長い間適用されている場合、プログラムのアップグレードは時間がかかり、エラーが発生しやすくなります.つまり、アップグレードの代価は大きくなります.
2、水平表:
水平パーティション技術は1つのテーブルを複数のテーブルに分解し、比較的よく使われる方法は、テーブルの記録をあるHashアルゴリズムに従って分割することであり、簡単な分割方法、例えば型取り方式である.同様に、このパーティション化方法は、フロントエンドのアプリケーションのSQLを変更して使用する必要があります.また、SQLの場合、2つのテーブルを変更する可能性があります.2つのSQL文を書く必要があります.これにより、論理的なトランザクションを完了することができ、プログラムの判断ロジックが複雑になります.これにより、プログラムのメンテナンスコストが高くなり、データベースを採用するメリットもなくなります.従って、パーティション化技術は、上記のような弊害を強力に回避し、大量のデータストレージを解決する有力な方法となる.
まとめ
, 。
資料を参照する.http://blog.csdn.net/ithomer/article/details/5136982