MySQL挿入パフォーマンスを最適化する方法の例

MySQL挿入パフォーマンスを最適化する方法の例

MySQL パフォーマンスの最適化

MySQL パフォーマンスの最適化とは、リソースを合理的に配置し、システム パラメータを調整することで、MySQL の実行速度を速め、より多くのリソースを節約することです。 MySQL パフォーマンスの最適化には、クエリ速度の最適化、更新速度の最適化、MySQL サーバーの最適化などが含まれます。このブログでは、クエリの最適化、データベース構造の最適化、MySQL サーバーの最適化という 3 つの側面を紹介します。

MySQL データベースの最適化は、一方ではシステムのボトルネックを特定し、MySQL データベースの全体的なパフォーマンスを向上させることです。他方では、ユーザー操作の応答速度を向上させるために合理的な構造設計とパラメータ調整が必要です。同時に、システムがより大きな負荷のサービスを提供できるように、システムリソースを可能な限り節約することも必要です。たとえば、ファイルシステムを最適化することで、ディスク I\O の読み取りおよび書き込み効率を向上させることができます。オペレーティングシステムのスケジューリング戦略を最適化することで、高負荷時の MySQL の負荷容量を向上させることができます。テーブル構造、インデックス、クエリステートメントなどを最適化することで、クエリ応答を高速化することができます。

MySQL の挿入ステートメントの構文と、MySQL の挿入パフォーマンスを最適化する方法の紹介。

`table`(`field1`,`field2`) に値('value1','value2') を挿入します。

挿入性能を向上させる方法

1. 1つのSQL文で複数のレコードを挿入する

`insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0) を挿入します。 
`insert_table` (`uid`, `content`, `type`) に値 ('userid_1', 'content_1', 1) を挿入します。

次のように書くことができる

`insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1); を挿入します。

2. トランザクションを使用する

トランザクションを開始します。 
`insert_table` (`uid`, `content`, `type`) に値 ('userid_0', 'content_0', 0) を挿入します。 
`insert_table` (`uid`, `content`, `type`) に値 ('userid_1', 'content_1', 1) を挿入します。 
... 
専念;

知らせ

1. SQL 文の長さには制限があるため、SQL 文をマージするときは注意してください。長さの制限は max_allowed_pa​​cket 設定項目を通じて変更できます。デフォルトは 1M です。

2. トランザクションが大きすぎると実行効率に影響します。MySQL には innodb_log_buffer_size 設定項目があります。この値を超えるとディスクデータが使用され、実行効率に影響します。

トランザクション構成項目の説明:

innodb_バッファプールサイズ

Innodb を使用する場合、これは重要な変数です。 MyISAM と比較すると、Innodb はバッファ サイズに対してより敏感です。 MySIAM は大量のデータに対してデフォルトの key_buffer_size で問題ないかもしれませんが、Innodb は大量のデータに対してデフォルト値で上昇しているように感じます。 Innodb のバッファ プールはデータとインデックスをキャッシュするため、システム キャッシュ用のスペースを残す必要はありません。Innodb のみを使用する場合は、この値をメモリの 70% ~ 80% に設定できます。 key_buffer と同様に、データ量が少なく、あまり増加しない場合は、この値を高く設定しすぎないことでメモリ使用量を改善することもできます。

innodb_追加プールサイズ

少なくともオペレーティング システムがメモリを適切に割り当てることができる場合、この影響はあまり顕著ではありません。ただし、Innodb が他の目的に割り当てるメモリの量を確認するには、20M 以上に設定する必要がある場合があります。

innodb_log_file_size

これは、大量のデータ、特に大容量のデータを書き込むときに非常に重要です。ファイルが大きいほどパフォーマンスは向上しますが、データベースの復元には時間がかかることに注意してください。通常は、サーバーの容量に応じて 64M ~ 512M を使用します。

innodb_log_buffer_size

中程度の書き込み操作と短いトランザクションを使用するほとんどの用途では、デフォルト値で十分です。頻繁に更新したり、大量の BLOB データを使用したりする場合は、この値を増やす必要があります。ただし、大きすぎると、1 秒ごとにフラッシュ (中国語ではどのように言うのでしょうか?) が行われるため、メモリが無駄になります。したがって、1 秒よりも長く設定する必要はありません。通常は 8M ~ 16M で十分です。小さなアプリケーションは小さく設定できます。

innodb_flush_log_at_trx_commit

Innodb は MyISAM より 100 倍遅いと不満を言っていますか?おそらくこの値を調整するのを忘れたのでしょう。デフォルト値 1 は、トランザクションのコミットまたはトランザクション外の命令ごとにログをハード ディスクにフラッシュする必要があることを意味し、非常に時間がかかります。特にバッテリーバックアップキャッシュを使用する場合。多くのアプリケーションでは、特に MyISAM テーブルから転送する場合は、これを 2 に設定すると問題ありません。これは、データがハードディスクではなくシステム キャッシュに書き込まれることを意味します。ログは毎秒ディスクにフラッシュされるため、通常は 1 ~ 2 秒以上の更新が失われることはありません。 0 に設定すると高速になりますが、安全性が低下し、MySQL がクラッシュした場合でもトランザクション データが失われる可能性があります。値が 2 の場合、オペレーティング システム全体がクラッシュした場合にのみデータが失われる可能性があります。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL 挿入ステートメント操作例の説明
  • mysql 操作の概要 INSERT と REPLACE
  • MySQL で挿入と選択をネストする方法
  • MySQL INSERT INTO ステートメントの正しい使用方法
  • MYSQL ヒント - LAST_INSERT_ID
  • MySQL での挿入ステートメントの使用と最適化に関するチュートリアル
  • MySql 挿入操作に関する 3 つのヒント
  • MySQL での大規模トランザクションによって発生する挿入の遅延ケースの分析

<<:  Docker コンテナ入門から夢中になるまで(推奨)

>>:  JSはreduce()メソッドを使用してツリー構造データを処理します

推薦する

Alibaba Cloud Server で MySQL デュアルマシン ホットスタンバイを手動で実装する 2 つの方法

1. コンセプト1. ホットバックアップとバックアップの違いホット バックアップは高可用性 (HA)...

nginx がドメイン名アクセス用に設定されている場合にドメイン名の後に 2 つのスラッシュ // が表示される問題の解決方法

最近、個人のウェブサイトを書き直しました。Alibaba Cloudで新しいサーバーを購入しました。...

uniapp プロジェクトで MQTT を使用する方法

目次1. uniappプラグインマーケットのリファレンスプラグイン2. 具体的な導入プロセス1. m...

Win10 64 ビットで圧縮パッケージを使用して最新の MySQL 8.0.18 をインストールするチュートリアル (画像とテキスト付き)

WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...

MySQLデータのグループ化の詳細な説明

グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...

CSS3 タイムラインアニメーション

成果を達成する html <h2>CSS3 タイムライン</h2> <...

MySQLデータベースのトランザクション分離レベルの詳細な説明

データベーストランザクション分離レベルデータベース トランザクションには、低から高まで 4 つの分離...

JSブラウザイベントモデルの詳細な説明

目次イベントとは簡単な例イベントをバインドする方法フレームワーク内のイベントイベントオブジェクトイベ...

Linux システムで Tomcat を自動的に起動するための設定方法の紹介

1. /etc/init.d ディレクトリに入ります: cd /etc/init.d 2. tomc...

MySQL 増分バックアップとブレークポイントリカバリスクリプトの例

導入増分バックアップとは、完全バックアップまたは最後の増分バックアップの後、後続の各バックアップでは...

JS で if 判定をスムーズに行う方法

目次序文コードの実装アイデア 1アイデア2要約する参照ドキュメント序文プロジェクト内の小さな要件ポイ...

Reactにおけるコンテキスト適用シナリオの分析

コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コ...

CSS 垂直センタリングの代替実装コードの詳細な説明(非従来型)

序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...

要素テーブルからヘッダーを削除する方法

show-header属性を使用したドキュメントのヒントshow-header <el-テーブ...

Windows 64 ビットに MySQL を再インストールするチュートリアル (Zip バージョン、解凍バージョンの MySQL インストール)

MySQLをアンインストールする1. コントロールパネルで、MySQLのすべてのコンポーネントをア...