docker pull mysql:5.7 mkdir /data/mysql/logs /data/mysql/conf /data/mysql/data -p
docker run --name mysql5.7 -p 3306:3306 \ -m 2g \ -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
mysql -uroot -p123456 -h 172.17.0.1#因為mysql運行在docker里需要這樣登錄
不然報錯ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql -uroot -p123456
yum install -y mysql
mysqlslap -a -c 500 -i 10 -uroot -p123456 -h 172.17.0.1
mysqlslap -a --concurrency=50,100 --number-of-queries 100 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p123456 -h 172.17.0.1
mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p123456 -h 172.17.0.1
顯示詳細過程的測試,如果報錯Option 'debug-info' used, but is disabled 請取消 debug-info參數
mysqlslap --concurrency=1000 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed \ --engine=myisam --number-of-queries=1000 --debug-info --only-print \ -uroot -p123456 -h 172.17.0.1
-concurrency代表並發數量,多個可以用逗號隔開,concurrency=10,50,100, 並發連接線程數分別是10、50、100個並發。
--engines代表要測試的引擎,可以有多個,用分隔符隔開。
--iterations代表要運行這些測試多少次。
--auto-generate-sql 代表用系統自己生成的SQL腳本來測試。
--auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--number-of-queries 代表總共要運行多少次查詢。每個客戶運行的查詢數量可以用查詢總數/並發數來計算。
--debug-info 代表要額外輸出CPU以及內存的相關信息。
--number-int-cols :創建測試表的 int 型字段數量
--auto-generate-sql-add-autoincrement : 代表對生成的表自動添加auto_increment列,從5.1.18版本開始
--number-char-cols 創建測試表的 char 型字段數量。
--create-schema 測試的schema,MySQL中schema也就是database。
--query 使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。
--only-print 查看語句做了什么。
mysqlslap --concurrency=1000 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed \ --engine=myisam --number-of-queries=10000 --debug-info \ -uroot -p123456 -h 172.17.0.1 mysqlslap --concurrency=2000 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=write \ --engine=myisam,innodb --number-of-queries=8000 --debug-info -uroot -p123456 -h 172.17.0.1
遠程數據庫加自定義端口
mysql -uroot -p -h 172.17.0.1 -P 4345
4G內存不優化測試
[root@node62 ~]# vi /etc/my.cnf
max_connections=2000 #修改客戶端最大連接數不然報錯繁忙
[root@node62 ~]# systemctl restart mysqld
mysqlslap --concurrency=1000 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed \ --engine=myisam --number-of-queries=1000000 \ -uroot -p123456
2000客戶端 10w數據測試報錯
優化打開數
查看用戶打開數
修改句柄
[root@node62 ~]# vi /etc/security/limits.conf
* soft nofile 65536 * hard nofile 65536
[root@node62 ~]# vi /etc/sysctl.conf
[root@node62 ~]# /sbin/sysctl -p
fs.file-max = 6553560
優化后測試10w數據
100w數據測試
tokudb參考
https://www.cnblogs.com/ivictor/p/5755876.html
安裝tokudb
https://yq.aliyun.com/articles/609881
參考
https://www.cnblogs.com/fjping0606/p/5853325.html #mysql讀寫性能測試
調優



唯品會docker容器化
https://juejin.im/entry/57d744af5bbb50005bcca4dd