MySQLクエリが遅い場合の理由と解決策

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くないときは、非常に遅いことに気づきませんでした。その後、どんどん遅くなりました。データ量が多いためだと思っていましたが、その後、耐えられないほど遅くなりました。長時間チェックし、使用できるインデックスをすべて使用しました。それでも、1 回の実行に 3 ~ 4 秒かかり、耐えられませんでした。

そこで、キャッシュ可能なすべてのクエリを redis を使用してキャッシュし、アプリケーションの速度を大幅に向上させました。

しかし、キャッシュできないものもまだいくつかあります。言い換えると、クエリするたびに結果が異なる場合は、キャッシュする方法がありません。 Navicat のクエリ概要を使用すると、スタックしている部分はデータの送信セクションにあり、3.5 秒かかり、クエリ時間の 99% を占めていることがわかります。

オンラインでいくつかの情報を調べたところ、その一部は SQL ステートメントの問題によるものであることがわかりましたが、varchar や in メソッドはまったく使用していませんでした。

そこで、テーブルが大きすぎてメモリにキャッシュされていないのではないかと思い、mysqldプロセスが占有するメモリを確認したところ、50M強しかなく、明らかに少なすぎました。テーブルの実際の容量は200M以上で、navicatのオブジェクト列で確認できます。各クエリがディスクから読み込まれるため、非常に時間がかかります。そこで、win10のディスクIOを確認したところ、確かにそうでした。ディスクIOは100%に達し、ソリッドステートドライブで、1秒あたり約80Mの読み取りでした。こんなに遅いのも不思議ではありません。

そこで、mysql の設定ファイルを確認したところ、32M の設定しかありませんでした。512M に調整して、mysql を再起動しました。今度は、時間が 3.5 秒から 0.76 秒に短縮されました。

構成項目は次のとおりです。

innodb_buffer_pool_size=32M

これは MySQL 5.7 のデフォルトです。ハードウェア構成に応じて、512 または 1024 に変更して再起動してください。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLのファジークエリのような遅い速度を解決する方法
  • MySQL のスロークエリの方法と例
  • MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明
  • MySQL の遅いクエリ操作の例の分析 [有効化、テスト、確認など]
  • MySQLクエリ速度が遅く、パフォーマンスが低下する原因と解決策
  • MySQLクエリが遅い原因と解決策
  • MySQL の遅いクエリの最適化方法と最適化の原則
  • MySQL でスロークエリログ機能を有効にする方法
  • MySQL スロークエリログの基本的な使い方チュートリアル
  • Mysql sql スロークエリ監視スクリプトコード例

<<:  Linux ファイルディレクトリ管理コマンドの概要

>>:  Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

推薦する

node_modulesを削除して再インストールする方法

目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...

WeChatアプレットはユーザーログインモジュールサーバーの構築を実装します

サーバーの構築には node.js を選択しました。まだインストールしていない方は、私の他の nod...

react-navigation6.xルーティングライブラリの基本的な使い方の詳しい説明

目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...

MySql 認証に基づく vsftpd 仮想ユーザー

目次1. MySQLのインストール1.2 テーブル、データベース、ユーザーを作成する1.3 リモート...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

JS+Canvas が抽選ホイールを引く

この記事では、宝くじターンテーブルを描画するJS + Canvasの具体的なコードを参考までに共有し...

mysqldumpデータエクスポートの問題に関する詳細な議論

1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...

1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法

今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...

MYSQLクエリデータの結果に自動的に番号を付ける方法

序文実際、クエリ中に結果に番号が付けられるこのような状況に遭遇したことは一度もありません。同僚が転職...

MySQL NULLがピットを引き起こした

比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...

Docker Swarmを使用してWordPressを構築する方法

原因かつて私は Vultr に WordPress を設定しましたが、よく知られている理由により、こ...

Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

序文MySQL に関する私の理解に基づくと、パフォーマンスの最適化作業やマスター スレーブ レプリケ...

WeChatミニプログラムQRコード生成ツール weapp-qrcode 詳細説明

WeChat ミニプログラム - QR コード ジェネレーターダウンロード: weapp-qrcod...

HTMLで境界線を設定する3つの方法の詳細な説明

HTML で境界線を設定する 3 つの方法 境界線の幅: 1px 2px 2px; 境界線のスタイル...