MySQL性能优化(一)MySQL架构

MySQL性能优化(一)MySQL架构

1. 衡量MySQL性能的指标

1.1 TPS和QPS

image.png

1.2 压测工具MySqlSlap

image.png

image.png

image.png

1.3 测试案例

测试一

1000个客户端并发执行,查询1000次,重复10次该操作

C:\Program Files\MySQL\MySQL Server 8.0\bin #进入mysql的bin目录
mysqlslap -uroot -pfBXKwnzemZ7M --concurrency=1000 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000

image.png

测试二

分别使用1,50,100,200个客户端并发访问,重复三次

mysqlslap -uroot -pfBXKwnzemZ7M --concurrency=1,50,100,200 --iterations 3 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --create-schema='test1'

image.png

  • windows上不能使用 --debug-info命令,以下为linux上使用--debug-info的运行结果

image.png

image.png

2. MySQL逻辑架构

image.png

2.1 连接层

image.png

  • MySQL是多用户的,每一个用户建立连接都会启动一个线程

2.2 SQL处理层

image.png

image.png

2.3 缓存

image.png

  • 缓存中保存的内容是:SQL语句和数据
  • SQL语句的缓存是默认开启的,数据的缓存需要手动开启
  • my.ini配置文件中,修改query_cache_type=1表示开启数据缓存,0表示关闭

2.4 解析查询

image.png

image.png

2.5 优化

image.png

  • WHERE 1 = 1 恒成立,与不加WHERE没有区别
  • WHERE id = NULL,因为id永不为NULL,所以优化后不会进行查询

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×