

Webアプリケーション経由でDBにデータをinsertしているのですが、  
ある日からinsertが遅くなりました。同じくらいの量のデータでも以前は、  
30秒から1分ほどで終わっていた処理が今は10分以上かかります。  
（一応処理は、時間がかかりますが成功します。）

一方、同じDBをdumpしてローカルの仮想環境に簡易構築した同じWebアプリケーションでは、  
実働のものよりメモリ等もスペックは低いですが、1分ほどでinsertの処理が終了します。

このような場合、どういったことが原因として考えられるのでしょうか。  
my.cnfの設定？ HDDなどのI/Oの問題？ ネットワークの問題？  
調査する方法・解決策等を教えていただけますと幸いです。


CC BY-SA 4.0
2020-11-07T10:40:04.450
71783
2021-11-17T04:06:45.570
21189
question
centos mariadb
insertが遅い原因


質問にあるように、DBをダンプして別環境に再構築して速度向上が見られるのであれば、  
DBの断片化が発生していると考えられます。

この場合、「`OPTIMIZE TABLE テーブル名`」を実行すると、事象が改善すると思います。

＃mariadbは専門ではないので、机上調査の上での回答です。

* * *

以下、補足です。

一般的に、SQL文の実行が遅い時の調査方法は「`EXPLAIN`」による実行計画の確認があります。  
SQL文の部分(例えば、`WHERE`句の条件式の1つ)ごとに処理時間が見えると思うので、それを  
確認する方法があります。  
(この場合、SQL文を見直すことになります)

また、`INSERT`が遅くなる場合、インデックスの更新に時間がかかっていることもあります。  
多数のインデックスを張っている、多量のレコードを格納している、等を確認する方法があります。  
(この場合、テーブル設計を見直すことになります)


CC BY-SA 4.0
2020-11-08T08:07:33.500
71797
2020-11-08T08:07:33.500
20098
71783
answer