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.jsで子プロセスを作成する方法

目次導入子プロセスプロセスを非同期的に作成する同期作成プロセス導入Node.js のメイン イベント...

MySQL が innobackupex を使用して接続サーバーをバックアップできない場合の解決策

innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...

CSSの2つの特別な値は、カスケードの継承と初期メソッドを制御するために使用されます。

カスケードを制御するために CSS の任意のプロパティに割り当てることができる特別な値が 2 つあり...

Vue+Openlayerはグラフィックスのドラッグと回転変形効果を実現します

目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...

docker compose helloworld を使い始めるための詳細なプロセス

前提条件Compose は、Docker コンテナをオーケストレーションするためのツールです。Doc...

MySQLデータベースを定期的に自動バックアップする方法

データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

JavaScript排他的思考の具体的な実装

前回のブログで、Xiao Xiong は関連する要素の操作方法を更新しましたが、同じ要素のグループが...

HTML 挿入画像の例 (HTML 追加画像)

HTML に画像を挿入するには、画像を表示するための HTML タグが必要です。これは、img タ...

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...

Linux CentOS でスケジュールされたバックアップ タスクを設定する方法

実装準備 # ファイルパスをバックアップする必要があります: /opt/apollo/logs/ac...

シンプルなドラッグ効果を実現するjs

この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

理論の普及——ユーザーエクスペリエンス

1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...

Vueのトランジションとアニメーションの深い理解

1. DOM要素を挿入、更新、または削除するときに、適切な場合は要素にスタイルクラス名を追加します。...

Docker 環境での Jmeter の分散操作に関する詳細なチュートリアル

1. jmeterの基本イメージを構築するDockerfile は次のとおりです。 # Java 8...