MySQL 性能优化

1、最大数据量

抛开数据量和并发数,谈性能都是耍流氓。MySQL 没有限制单表最大记录数,它取决于操作系统对文件大小的限制。

文件系统

单文件大小限制

FAT32

最大 4G

NTFS

最大 64GB

NTFS5.0

最大 2TB

EXT2

块大小为 1024 字节,文件最大容量 16GB;块大小为 4096 字节,文件最大容量 2TB

EXT3

块大小为 4KB,文件最大容量为 4TB

EXT4

理论可以大于 16TB

《阿里巴巴 Java 开发手册》提出单表行数超过 500 万行或者单表容量超过 2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL 配置、数据表设计、索引优化。500 万这个值仅供参考,并非铁律。博主曾经操作过超过 4 亿行数据的单表,分页查询最新的 20 条记录耗时 0.6 秒,SQL 语句大致是select field_1,field_2 from table where id < #{prePageMinId} order by id desc limit 20,prePageMinId 是上一页数据记录的最小 ID。虽然当时查询速度还凑合,随着数据不断增长,有朝一日必定不堪重负。分库分表是个周期长而风险高的大活儿,应该尽可能在当前结构上优化,比如升级硬件、迁移历史数据等等,实在没辙了再分。

2、最大并发数

并发数是指同一时刻数据库能处理多少个请求,由 max_connections 和 max_user_connections 决定。max_connections 是指 MySQL 实例的最大连接数,上限值是 16384,max_user_connections 是指每个数据库用户的最大连接数。MySQL 会为每个连接提供缓冲区,意味着消耗更多的内存。如果连接数设置太高硬件吃不消,太低又不能充分利用硬件。一般要求两者比值超过 10%,计算方法如下:

max_used_connections / max_connections * 100% = 3/100 *100% ≈ 3%

查看最大连接数与响应最大连接数:

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

在配置文件 my.cnf 中修改最大连接数

[mysqld]
max_connections = 100
max_used_connections = 20

3、查询耗时 0.5 秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值