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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

發(fā)布時間:2023/12/19 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文:再送一波干貨,測試2000線程并發(fā)下同時查詢1000萬條數(shù)據(jù)庫表及索引優(yōu)化

繼上篇文章《絕對干貨,教你4分鐘插入1000萬條數(shù)據(jù)到mysql數(shù)據(jù)庫表,快快進來》發(fā)布后在博客園首頁展示得到了挺多的閱讀量,我這篇文章就是對上篇文章的千萬級數(shù)據(jù)庫表在高并發(fā)訪問下如何進行測試訪問

這篇文章的知識點如下:

1.如何自寫幾十行代碼就能模擬測試高并發(fā)下訪問千萬級數(shù)據(jù)庫表

2.比較高并發(fā)下(200次/秒,2000次/秒,10000次/秒)數(shù)據(jù)庫的性能

3.比較千萬級數(shù)據(jù)庫在查詢時加索引與不加索引的巨大差異(說實話,這個測試結(jié)果讓我自己本人也很驚訝)

針對上篇文章插入的1000萬條數(shù)據(jù)到數(shù)據(jù)庫后,我們進行了高并發(fā)下測試(模擬教師輸入姓名和密碼在1秒內(nèi)登錄數(shù)據(jù)庫),線程類代碼如下

package insert;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;public class ThreadToMysql extends Thread {public String teacherName;public String password;public ThreadToMysql(String teacherName, String password) {//構(gòu)造函數(shù)傳入要查詢登錄的老師姓名和密碼this.teacherName=teacherName;this.password=password;}public void run() {String url = "jdbc:mysql://127.0.0.1/teacher"; String name = "com.mysql.jdbc.Driver"; String user = "root"; String password = "123456"; Connection conn = null; try {Class.forName(name);conn = DriverManager.getConnection(url, user, password);//獲取連接 conn.setAutoCommit(false);//關(guān)閉自動提交,不然conn.commit()運行到這句會報錯} catch (ClassNotFoundException e1) {e1.printStackTrace();} catch (SQLException e) {e.printStackTrace();}if (conn!=null) {Long startTime=System.currentTimeMillis();//開始時間String sql="select id from t_teacher where t_name='"+teacherName+"' and t_password='"+password+"'";//SQL語句String id=null;try {Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(sql);//獲取結(jié)果集if (rs.next()) {id=rs.getString("id");}conn.commit();stmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}Long end=System.currentTimeMillis();System.out.println(currentThread().getName()+" 查詢結(jié)果:"+id+" 開始時間:"+startTime+" 結(jié)束時間:"+end+" 用時:"+(end-startTime)+"ms");} else {System.out.println(currentThread().getName()+"數(shù)據(jù)庫連接失敗:");}}}

?測試類代碼如下:

package insert;public class TestThreadToMysql {public static void main(String[] args) {for (int i = 1; i <=2000; i++) {String teacherName=String.valueOf(i);new ThreadToMysql(teacherName, "123456").start();}

?一.在沒有加索引的情況下測試:

把數(shù)據(jù)庫的最大連接數(shù)設(shè)置為250:

測試代碼:

package insert;public class TestThreadToMysql {public static void main(String[] args) {for (int i = 1; i <=200; i++) {String teacherName=String.valueOf(i);new ThreadToMysql(teacherName, "123456").start();}}}

?測試結(jié)果:

100多秒啊。。。我的天,這用戶體驗也沒準(zhǔn)了O(∩_∩)O哈哈~

二.加索引后再次進行高并發(fā)下測試:

數(shù)據(jù)庫加索引SQL語句如下:這里我有一個疑問,上個星期我加索引等了半個小時我都沒加完索引我就停止了,今天下午居然只用了551秒就加完了索引。。。搞不懂

clean下項目代碼后再次運行(盡量經(jīng)常clean下項目去掉緩存,不然結(jié)果會有出入):

看到這個結(jié)果有沒有被驚呆啊?哈哈加了索引由100多秒提升到1~2毫秒,查詢速度提示1萬多倍,查詢性能得到大幅度變態(tài)級提升~~~

沒加索引之前我查詢單個記錄都要2秒多

用explain查看語句可以知道要掃描全表,性能當(dāng)然大幅度下降

?

?

?

?

?

下面我們來挑戰(zhàn)2000線程同時并發(fā)訪問查詢數(shù)據(jù)庫。看看結(jié)果:

把數(shù)據(jù)庫最大連接數(shù)設(shè)置為2500

測試代碼改為2000

package insert;public class TestThreadToMysql {public static void main(String[] args) {for (int i = 1; i <=2000; i++) {String teacherName=String.valueOf(i);new ThreadToMysql(teacherName, "123456").start();}}}

?結(jié)果截圖:

性能沒問題,平均幾十毫秒,很滿意

下面我們來挑戰(zhàn)一下1萬個線程同時高并發(fā)訪問,大家可以先想想結(jié)果會怎么樣,哈哈

設(shè)置數(shù)據(jù)庫最大連接數(shù)12000

測試代碼改為10000(再次提示。clean一下項目去掉緩存,這樣結(jié)果更準(zhǔn)確)

package insert;public class TestThreadToMysql {public static void main(String[] args) {for (int i = 1; i <=10000; i++) {String teacherName=String.valueOf(i);new ThreadToMysql(teacherName, "123456").start();}}}

?結(jié)果如下(運行后發(fā)現(xiàn)電腦有點卡):

結(jié)果出現(xiàn)兩種報錯,1.連接請求被拒絕 2.連接失效 3.不過也有一部分成功連接上并且正確運行

然后我在數(shù)據(jù)庫查看最大連接響應(yīng)數(shù):

可以看出來就算你的數(shù)據(jù)庫設(shè)置為再高你的數(shù)據(jù)庫服務(wù)器也響應(yīng)不過來。。。。頂多響應(yīng)5758個

?小小總結(jié),1.可以自己測試高并發(fā)下挑戰(zhàn)數(shù)據(jù)庫性能,2. 對索引在查詢性能上的強大有一個大概認識? 很適合初學(xué)者學(xué)習(xí)了解

總結(jié)

以上是生活随笔為你收集整理的再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野结衣一区二区三区免费视频 | 非洲黑人狂躁日本妞 | 亚洲一区二区三区四区五区xx | 91草视频 | 欧美成年人视频在线观看 | 香蕉精品视频在线观看 | 成人免费一级 | 日韩亚洲精品在线 | 中文字幕乱码无码人妻系列蜜桃 | 欧美亚洲一级 | 成人乱码一区二区三区av | 香蕉网在线播放 | 91麻豆影院 | 在线观看www. | 男人操女人的网站 | 午夜av网| 交专区videossex另类 | 欧美视频第一区 | 日韩精品久久久久久久酒店 | 国产成人精品亚洲 | 精品国产欧美 | 亚洲男人的天堂网站 | 日韩av中文字幕在线免费观看 | 国产卡一卡二卡三无线乱码新区 | 91欧美日韩麻豆精品 | 自拍欧美日韩 | 激情久久五月 | 边啃奶头边躁狠狠躁 | 国产精品免费一区二区三区 | 男人天堂最新网址 | 极品国产一区 | 中文字幕一区二区三区乱码人妻 | 巨物撞击尤物少妇呻吟 | 中文字幕一区二区在线观看视频 | 免费观看的毛片 | 国产精品一区二区视频 | 欧美mv日韩mv国产网站 | 伊人资源网 | 影音先锋丝袜美腿 | 国产在线精品自拍 | 国产在线中文字幕 | 精品资源在线 | 亚洲第一男人天堂 | 亚洲成人一二三 | 国产又爽又黄游戏 | 日韩乱码人妻无码中文字幕 | 日本久久视频 | 人人爱人人澡 | 国产精品亲子伦对白 | 97超碰中文字幕 | 深夜精品视频 | 国产一二三区精品 | 久久久久网站 | 日韩极品在线观看 | 黄网站免费在线观看 | 国产尤物av| 深夜激情网 | 午夜av网站 | 日韩有码中文字幕在线观看 | 2017天天干 | 久久9999久久免费精品国产 | 国产真实的和子乱拍在线观看 | 天堂中文网在线 | 极品美女高潮 | 国产手机精品视频 | 国产一级视频在线观看 | 偷拍第一页 | 狠狠操综合网 | 97成人超碰| 久久久久一区二区三区 | 中文字幕69页 | 国产做a| 日韩一区二区在线看 | 亚洲熟妇国产熟妇肥婆 | 亚欧在线观看 | 天天夜夜啦啦啦 | 天堂av片| 精人妻无码一区二区三区 | 97国产在线观看 | 澳门久久久 | 精品国产96亚洲一区二区三区 | 蜜桃视频久久 | 国内自拍视频网站 | 日本精品视频一区二区 | 免费看成年人视频 | 免费性网站 | 秘密爱大尺度做爰呻吟 | 亚州久久久| 国产精品免费一区二区三区 | 妞妞av | 亚洲性一区| 玖玖热视频 | 久久久久久久久久久久久久久久久久久久 | 一级福利视频 | 欧美在线播放一区二区 | 欧美视频一二三区 | 国产亚洲av片在线观看18女人 | 日韩欧美在线一区二区 | 香蕉视频国产在线观看 |