mysql性能,以及如何应对面试中的sql问题

mysql 性能

1.最大数据量
抛开数据量和并发数,性能即是毋庸之谈。
MySQL没有限制单表的最大记录数,它取决于操作系统对文件大小的限制。

文件系统单文件大小限制
FAT32最大4G
NTFS最大64G
NTFS5.0最大2TB
EXT2块大小为1024字节,文件最大容量16GB;块大小为4.96字节,文件最大容量2TB
EXT3块大小为4KB字节,文件最大容量4TB
EXT4理论大于16TB

当单表行数超过500万或者单表容量超2GB,推荐试用分表分库处理。
性能的影响因素是多方面的,依次为硬件配置、MySQL配置、数据库设计、索引优化。
2.最大并发数
并发数是指同一时刻数据库能处理多少的请求,由max_connections和max_user_connections决定。
max_connections是指MySQL实例的最大链接数,上限值为16384.
max_user_connections是指每个数据库用户的最大连接数。
查看值:

show variables like '%max_connections%';    100
show variables like '%max_user_connections%'; 10

max_used_connections / max_connections * 100% = 3/100 *100% ≈ 3% ,
两者值最好比例大于10%。
响应时间=客户端UI渲染耗时+网络请求耗时+应用程序处理耗时+查询数据库耗时 3s为用户的体验时间,所以0.5秒是留给数据库的查询时间。

3.数据库设计
数据类型
数据库设计遵循三范式,字段类型选择:更简单或者占用空间小的原则
• 如果长度能够满足,整型尽量使用tinyint、smallint、medium_int而非int。
• 如果字符串长度确定,采用char类型。
• 如果varchar能够满足,不采用text类型。
• 精度要求较高的使用decimal类型,也可以使用BIGINT,比如精确两位小数就乘以100后保存。
• 尽量采用timestamp而非datetime。

避免空值
MySQL中字段为NULL时依然占用空间,会使索引、索引统计更加复杂。从NULL值更新到非NULL无法做到原地更新,容易发生索引分裂影响性能。尽可能将NULL值用有意义的值代替,也能避免SQL语句里面包含is not null的判断。
Text类型优化
由于text字段储存大量数据,表容量会很早涨上去,影响其他字段的查询性能。建议抽取出来放在子表里,用业务主键关联。
4.优化索引
索引分类:
• 普通索引:最基本的索引。
• 组合索引:多个字段上建立的索引,能够加速复合查询条件的检索。
• 唯一索引:与普通索引类似,但索引列的值必须唯一,允许有空值。
• 组合唯一索引:列值的组合必须唯一。
• 主键索引:特殊的唯一索引,用于唯一标识数据表中的某一条记录,不允许有空值,一般用primary key约束。
• 全文索引:用于海量文本的查询,MySQL5.6之后的InnoDB和MyISAM均支持全文索引。由于查询精度以及扩展性不佳,更多的企业选择Elasticsearch。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值