mysql性能优化总结(四)
mysql数据库结构设计和SQL优化
数据库设计对性能的影响
1.过分的反范式化设计为表建立太多的列(服务层和存储引擎层之间通过反冲格式来拷贝数据和解析成列,列过多,带来额外的cpu消耗)
2.过分范式化造成过多的表关联,mysq最多支持61张表的关联查询,需要控制在10个以内
3.使用不恰当的分区表
4.使用了外键
mysql性能优化顺序
1.数据库结构设计和sql语句(需要持续关注)
2.存储引擎的选择和参数配置
3.系统选择与优化
4.硬件升级
mysql基准测试
基准测试常见指标
1.TPS
2.QPS
3.响应时间
mysql基准测试工具
1.msyqlslap mysql服务器自带的基准测试工具
测试语句:
mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=sbtest --only-print | more
2.sysbench
数据库结构设计优化
目的:
步骤:
数据库设计范式:
数据库的反范式化:
反范式化是使用空间来换取时间
范式化和反范式化的优缺点比较
范式化:
反范式化:
数据库的物理设计:
varchar最大长度为65535个字符
在内存中使用的是定长的数据结构,所以varchar(5)和varchar(255)并不一样
char类型避免产生存储碎片
datetime也可以做到自动更新