MySQLの最適化(7):その他の考慮事項

DDLの実行

オンラインDDLを実行するには、サーバー、更新テーブル構造、注意する必要があり、構造的な変化は、全表につながる排他ロックである(新バージョンが改善されました)

これを避けるため、COPY戦略を使用して、直接ではなく、ALTER TABLE文を実行することにより、

アイデア:、インポート処理、他のタスクがログに記録され、インポートがログ更新新しいテーブル、そして最後に新しい表に従って完了し、新しいテーブルを作成して新しい要件、新しいテーブルをインポートすることで、古いテーブルデータのいずれかを満たすために、テーブルの上に他のタスクを実行することができます(達成するためのJavaコードなど)古い表を置き換えます

 

データインポート文

データを復元するとき、それは、データのインポートの多くを必要と

アイデア:、無効インデックスと制約をインポートすると、インポートが完了し、その後、1回限りのインデックスを作成するには、インデックスと制約を回した後、

ステートメントを使用することが可能である:インデックス作成を無効とオープンインデックス

ALTER TABLE [テーブル名] DISABLE KEYS。
ALTER TABLE [テーブル名]キーをENABLE。

InnoDBストレージエンジンの場合は、複数のSQLが完了したトランザクションに配置することができます 

SQLコンパイラは、同じ構造を減らすために、インポート操作が行われた準備プリコンパイルされたプログラムの数を使用することができ

 

ミサページLIMIT

LIMIT 10000,10として、大きなオフセットなどを使用しないようにしてください

アイデア:代わりに、データをスキップする、フィルタリング条件のスクリーニングデータの完了を利用するためには、OFFSETによって照会されています

 

選択する *

SELECT *が、特定のフィールドの使用を使用しないでください。このパフォーマンスへの影響は大きくありませんが、これは当たり前です

 

ORDER BY RAND()を使用しないでください

トラフィックは、ランダムに生成された主キーを取得するために、可能な限りランダムに選択されたサーバコードで実装される場合には、この文は、ランダムな順序であります

 

シングルテーブルとマルチテーブルのクエリ

以下の理由から、代わりにマルチテーブルクエリの単一テーブルのクエリを使用してみてください:

(1)単一のテーブルJavaコード算出圧力は、マルチテーブルは、データベース内の圧力を計算します

(2)マルチテーブルは、実行するためにテーブルを照会し、最後に結果をマージ

(3)マルチテーブルクエリがロック時間が長くなり、プログラムの同時実行を減らします

 

カウント(*)

MYISAM自動的に格納された値COUNT(*)は、比較的遅いフレーズを行う、いかなる内部カウンタINNODBではありません

解決策:余分なテーブルを作成し、値COUNT(*)が記録されています

さらに:

COUNT(ID)が表される:統計IDフィールドがNULLの数ではありません

レコードの数をカウントし、COUNT(*)はほぼ同じである:COUNT(1)で表されます

 

LIMIT 1

あなたが見つけた唯一つの結果を確信している場合は、LIMIT 1を追加すると、パフォーマンスが向上します

 

スロークエリログ

素早く見つけるために実行時間を記録するために使用されるSQLログの特定の臨界値、スロークエリを超えるユーザー

ログを開きます。

開くかどうかを照会

'slow_query_log' LIKE SHOW VARIABLESは、

オープン

SET GLOBAL slow_query_log =オン;

Slow.logファイルは、開封後のデータディレクトリに作成されます

重要な時期を見ると、デフォルトでは長い10秒です

'long_query_time' LIKE SHOW VARIABLESは、

重要な時期を設定します

SET long_query_time = 0.5。

より0.5秒後に、自動的に記録されます

 

PROFILE統計情報

SQL文の実行時ツールの詳細な記録

オープンPROFILE:

オン=プロファイリングSET。

結果を表示するコマンドを使用します

プロファイルの表示;

バーの具体的な詳細

QUERYを表示:PROFILE [QUERY_ID]

 

典型的なサーバ構成

(1)MAX_CONNECTIONS:接続のMySQLの現在の最大数は151許さ

(2)table_open_cacheの:テーブルのハンドルのキャッシング2000

(3)key_buffer_sizeは:8388608インデックスバッファサイズ

(4)innodb_buffer_pool_size:もっと重要INNODBストレージエンジンのキャッシュ・プール・サイズ、可能な限り大きく設定します

innodb_file_per_tableを(5):INNODB別テーブルファイルテーブル、ONは、すべてのファイルが一緒にテーブルに格納、そうでなければ、テーブルファイルにテーブル対応を表すINNODB

 なかでも、動作環境の実際の構成に依存します

 

mysqlslapはストレステストツール

これは、EXEが、具体的には、直接実行DBAの仕事であるBaiduは、ないプログラマの仕事のmysqlに付属しているツールです。

 

 

最後に、私は非常に良いで書かれた記事をお勧めします

https://www.cnblogs.com/jajian/p/9758192.html

おすすめ

転載: www.cnblogs.com/miaoweiye/p/12519663.html