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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Mongodb Mysql 小测试 (To Be Continued)

發布時間:2024/1/8 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb Mysql 小测试 (To Be Continued) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mongo-vs-mysql

嘗試測試Mongodb 和 Mysql的性能,測試/數據導入代碼:github: mongo-vs-mysql

性能比較很復雜,不能簡單就說誰的性能高,誰的低。要基于場景,基于并發請求數量來談,同時也要知道如何調優,本文只是初探,在沒有任何調優的基礎上,在本地windows 7上進行測試。

版本及環境

  • 操作系統: windows 7
  • 硬件環境: (只做對比,mongodb和mysql都裝在同一臺機器上)
  • mongodb: 3.2.5
  • mysql: 5.7

Data-demo

Data-demo 是一個Spring Boot的項目, 通過Spring Boot的CommandLineRunner來批量動態插入1000,020 條數據。

數據結構采用常用的產品和類目的多對多的設計。

Category 數據如下:

idcodename
‘1’‘cate-1’‘Category 1’
‘2’‘cate-2’‘Category 2’
‘3’‘cate-3’‘Category 3’
‘4’‘cate-4’‘Category 4’

Product 數據如下

idcodenameprice
‘1’‘p-0’‘product 0’‘19’
‘2’‘p-1’‘product 1’‘19’
‘3’‘p-2’‘product 2’‘19’
‘1000000’‘p-999999’‘product 999999’‘19’
‘1000001’‘pp-0’‘iphone’‘19’
‘1000002’‘pp-1’‘iphone’‘19’
‘1000003’‘pp-2’‘iphone’‘19’
‘1000004’‘pp-3’‘iphone’‘19’
‘1000005’‘pp-4’‘iphone’‘19’
‘1000006’‘pp-5’‘iphone’‘19’
‘1000007’‘pp-6’‘iphone’‘19’
‘1000008’‘pp-7’‘iphone’‘19’
‘1000009’‘pp-8’‘iphone’‘19’
‘1000010’‘pp-9’‘iphone’‘19’
‘1000011’‘pp-10’‘iphone’‘19’
‘1000012’‘pp-11’‘iphone’‘19’
‘1000013’‘pp-12’‘iphone’‘19’
‘1000014’‘pp-13’‘iphone’‘19’
‘1000015’‘pp-14’‘iphone’‘19’
‘1000016’‘pp-15’‘iphone’‘19’
‘1000017’‘pp-16’‘iphone’‘19’
‘1000018’‘pp-17’‘iphone’‘19’
‘1000019’‘pp-18’‘iphone’‘19’
‘1000020’‘pp-19’‘iphone’‘19’

最后的二十行是用來方便查詢驗證的。

Product_Category

中間mapping的表格

Mongo 數據

采用了 Nodejs+express+mongoose 來導入mongo的數據. 項目express-mongoose-microservice-api-boilerplate中的config/test.env來配置mongo的數據庫地址。npm install 然后運行命令npm run produceTestData 可以初始化1000,020 條產品數據到mongodb。 數據類似mysql的產品數據:

產品 Product

{"_id": "59cb4952d44efa2eb45d4bf7","code": "p-0","name": "Product 0","price": 19,"__v": 0,"categories": ["cate-1","cate-2"] }

有20條產品數據的categories中有cate-4

通過查詢腳本直接測試:

通過Robomongo 連接Mongodb來測試,通過mysql的workbench來完成mysql的腳本查詢。

場景一:查詢單個類目下的產品

mongo 查詢所有的cate-4 的產品

db.getCollection('products').find({categories:'cate-4'}) // 初次查詢1.321 秒 緊接著的兩次查詢大概0.791 秒

mysql 查詢所有的cate-4 的產品

SELECT * FROM product p inner join product_category pc inner join category c on p.id=pc.product_id and pc.category_id=c.id where c.code ='cate-4'; -- 毫秒級,時間可以忽略不計, 產品和類目的code都是unique的索引,所以查詢速度很快 SELECT * FROM product p inner join product_category pc inner join category c on p.id=pc.product_id and pc.category_id=c.id where c.name ='Category 4'; -- 6.2秒,name不是索引,所以慢。(索引的用處毫無疑問,無需贅述)

場景二:查詢多個類目下的產品

查詢所有cate-4 加上 cate-5 的產品。(實際上cate-5并不存在,不過不影響測試)

mongod

db.getCollection('products').find({categories:{$in:['cate-4','cate-5']}}) // 0.89 秒; 和查詢cate-4的產品相差不多,都是全表掃描

mysql

SELECT * FROM product p inner join product_category pc inner join category c on p.id = pc.product_id and pc.category_id = c.id where c.code = 'cate-5' or c.code='cate-4'; -- 6.177 秒, SELECT * FROM product p inner join product_category pc inner join category c on p.id = pc.product_id and pc.category_id = c.id where c.code in('cate-5','cate-4'); -- 6.24 秒

通過上面的測試可以看出,mysql數據庫在數據體量大的時候,用or或者in都有很嚴重的性能問題,可以考慮使用union來代替。一般電商平臺的處理方式:如果是后臺維護功能應該從業務上來避免這種場景,如果是前端面向用戶的功能,需要引入搜索引擎 比如: elasticsearch

場景三:單表無索引

查詢名稱是iphone的產品

Mysql

select * from product where name='iphone'; -- 0.546 秒,全表掃描

mongo

db.getCollection('products').find({name:'iphone'}) // 0.428 秒

全表掃描兩者并無太大的差距。

場景四:單表索引

db.getCollection('products').find({code:'pp-1'}) select * from product where code='pp-1';

一百萬條數據,單表索引速度都是毫秒級,時間可以忽略不計。

場景五:單表索引字段使用In來查詢

場景二我們提到了Mysql中關聯表時使用in查詢的效率問題。下面測試下單表的In查詢效率, 通過測試我們可以發現單表針對索引的in的查詢都是毫秒級的。
mongodb 歷時0.004 sec. 索引被用上了

// 非ID的索引字段 db.getCollection('products').find({"code": {"$in": ["pp-0","pp-1"]} }) // _id 主鍵的$in 查詢 db.getCollection('products').find({"_id": {"$in": [ObjectId("59cb4952d44efa2eb45d4bf7"),ObjectId("59cb4952d44efa2eb45d4bf8")]} })

Mysql 也是毫秒級,時間忽略不計

select * from product where code in ('pp-0','pp-4'); // 0.0000 sec

總結

以上是生活随笔為你收集整理的Mongodb Mysql 小测试 (To Be Continued)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成年人网站在线观看视频 | 亚洲欧美中文日韩在线观看 | 九色激情网 | 亚洲熟女一区二区三区 | 九九视频免费看 | 欧美aaaaa| 99思思| 日韩小视频在线 | 亚洲精品视频免费观看 | 三级视频在线 | 色妹av| 男人的天堂国产 | 天天草夜夜草 | 国产三级视频在线 | 日韩av中字| 欧美视频一区二区三区四区在线观看 | 丰满岳乱妇国产精品一区 | 国产精品jizz在线观看无码 | 国产精品主播在线 | 欧美日韩亚洲精品内裤 | 欧美人妻日韩精品 | 无码国产色欲xxxx视频 | 福利毛片| 日本欧美一本 | 精品少妇一区二区三区在线观看 | 欧美福利视频在线 | 天天干免费视频 | 天天操天天爽天天干 | 69久久夜色精品国产69 | 亚洲三级在线免费观看 | 中字幕一区二区三区乱码 | 在线免费观看日韩视频 | 丰满人妻综合一区二区三区 | free国产hd露脸性开放 | 色爽黄 | 天堂中文在线官网 | 一本色道综合久久欧美日韩精品 | 一级久久久久久 | 涩涩视频在线观看 | 国产精品天美传媒沈樵 | 亚洲性在线 | 香港三级日本三级韩国三级 | sao虎视频在线精品永久 | 欧美日韩精选 | wwwxxx色| a天堂中文在线 | 1000部拍拍拍18勿入免费视频 | 久久亚洲高清 | 人妻熟女aⅴ一区二区三区汇编 | 国产一二精品 | 国产一区二区毛片 | 精品国产av一区二区三区 | jizjiz中国少妇高潮水多 | jizz教师 | 麻豆污视频| 国模无码大尺度一区二区三区 | 中文字幕1区2区3区 www.com黄色片 | 一级黄色大片在线观看 | 91视频在线免费观看 | 精品久久久中文字幕人妻 | 午夜精品毛片 | 久久精品男人 | 久久久久精彩视频 | 日本三级播放 | 中文字幕在线免费看线人 | 在线免费观看a视频 | a免费视频 | a级片在线免费观看 | 高h全肉污文play带道具 | 色94色欧美sute亚洲线路二 | 欧美国产一级片 | 日韩在线中文字幕 | 欧美日韩在线免费看 | 舒淇裸体午夜理伦 | 91精选| 国产一区一区 | 国产精品一卡二卡 | 在线色综合 | 国产麻豆精品久久一二三 | 黄色片播放器 | 国产精品国产三级国产普通话对白 | 日本免费三片在线播放 | 精品国产av一区二区 | 蜜臀99久久精品久久久久久软件 | 日韩激情av在线 | 欧美污视频在线观看 | 国产白浆在线 | 在线国产视频 | 日本二区视频 | 久久网站免费看 | 中文av网站 | 猎艳山村丰满少妇 | 免费成人毛片 | 国内av在线 | 亚洲拍拍视频 | 综合视频在线 | 永久视频在线观看 | 欧美脚交视频 | 免费高清黄色 |