日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql插入性能_mysql 数据量大时插入和查询性能

發布時間:2023/11/27 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql插入性能_mysql 数据量大时插入和查询性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在mysql中有數據33.8w的數據,然后做查詢和更新或插入操作,速度很慢,基本100條數據就要1.68s。好慢啊,我要測試一下,到底慢在哪?能不能提高點速度?

參考一篇博文:http://blog.csdn.net/clh604/article/details/19608869#0-tsina-1-37035-397232819ff9a47a7b7e80a40613cfe1。現在是2015.06.15 09:59。我要開始了。

1、首先我要在數據庫中插入50w的數據。

剛開始速度還是很快的,當數據庫中有2w多數據時,插入速度明顯變慢,插入1000條,大約需要十幾二十秒?,F在數據庫中大約有4w數據,插入1000條,大約需要二三十秒。這個速度正常嗎?程序是同事的,用了SSH框架,不用手動建表,有影響嗎?不是吧,如果速度維持在30s、1000條,還需要3個小時,才能把數據插完?,F在數據庫中有14.7w,插入1000條大概2分半。

插入前還要根據標題檢查是否有重復的,如果有重復的就從數據庫中查詢出來,然后合并,更新,如果沒有就插入。

不是吧,我將插入數據庫的程序改為了最簡單的jdbc,參考博文:http://www.askmaclean.com/archives/java-jdbc-batch-update-optimization.html。用PreparedStatement+addBatch+executeBatch,9s中插入了13.5w條。難道用框架,效率會受這么大的影響??不到10分鐘已經導入了50w數據了。

將用SSH的程序去掉查詢,只有插入,速度大概為1000條三四秒鐘?,F在已經6w了,速度沒有降低。已經10.3w了,速度沒有變慢。看來第一次測試時,速度變慢是因為查詢。

2、下面測試查詢的速度。(數據庫中有54.6w數據)

比較根據id查詢和根據沒有建索引的普通字段查詢速度的差別。

比較批量查詢和單獨查詢的差別。

根據id查詢1000次,花費時間:14s。好長啊。先保存下,要下班了?,F在是2015年6月16日 09:51,繼續。

看來昨天的14s還算正常的。今天根據title查,title是沒有建索引的,查了10條,用了大概60秒。相差3750倍!!好吧,我知道我的程序慢在哪了。

上面使用普通的jdbc查詢的,下面用SSH框架的程序測一測,用的數據庫中有348000數據。

根據id查詢1000次,竟然消耗時間:70538ms。查詢比純jdbc慢5倍,插入慢3-4倍。根據title就不測了,還是測測吧,查需10條,消耗時間:121825ms。

下面我要測測批量查詢是不是會好點。

我都驚了!根據id批量查詢1000次,就是用in集合,消耗時間:2996ms。好快啊,參考:http://stackoverflow.com/questions/9853197/jdbc-batch-query-for-high-performance。

根據title查詢10次,消耗時間:5745ms,查詢50次,消耗時間:6485ms,100次,消耗時間:6624ms,1000次,消耗時間:6155ms。怎么沒差別啊,是不是哪錯了?幾次查詢之間會有影響嗎?我不明白。

用SSH框架的程序測,數據庫中34.8w,根據id一次查詢1000條,消耗時間:17083ms。根據title查詢10條,消耗時間:13182ms;50條,消耗時間:12655ms;100條,消耗時間:13682ms;500條,消耗時間:17317ms;1000條,消耗時間:21314ms。差別也不大。

到這就測的差不多了,下面總結下,要不估計只有現在的我能看懂了。

插入操作

純jdbc

1000條/1秒;50w數據大約10分鐘,速度穩定。

SSH框架

1000條/3~4秒;50w數據大約30分鐘,速度穩定。

多次單條查詢

根據id查詢

根據title查詢(無索引)

純jdbc(數據庫中有54.6w數據)

1000次/14秒

10次/60秒

SSH框架(數據庫中34.8w)

1000次/70秒

10次/12秒

in語句批量查詢

根據id查詢

根據title查詢(無索引)

純jdbc(數據庫中有54.6w數據)

1000條/3秒

1000-10條/6秒

SSH框架(數據庫中34.8w)

1000條/17秒

10條/13秒;500條/17秒;1000條/21秒

結論:純jdbc比用框架快3~5倍;插入速度不會因為數據量增多而變慢;查詢時盡量一批批的查,不要一條條的查。

現在要去改我的程序了,現在插入100條,大約2分鐘。

今天不想測了,先到這吧。

修改了程序,沒有大動,只將原來一條一條的查詢,改為了一批一批的查詢,速度明顯快了,而且不會隨著數據量變化而變化,現在速度是1000條3秒,不錯不錯。

總結

以上是生活随笔為你收集整理的mysql插入性能_mysql 数据量大时插入和查询性能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:mysql插入性能_mysql 数据量大时插入和查询性能