mysql 两张大表关联_面试问烂的 MySQL 查询优化

本文探讨了MySQL查询速度的影响因素,包括大表关联带来的问题和大事务的风险。重点分析了大表的特点、危害及处理方法,强调了如何避免数据库连接问题和选择合适的存储引擎。此外,还介绍了InnoDB存储引擎的特性,如事务性、行级锁以及日志类型。文章提供了性能优化的顺序和配置参数建议。
摘要由CSDN通过智能技术生成

阅读文本大概需要3分钟。

什么影响了数据库查询速度

1.1 影响数据库查询速度的四个因素

1000b7b1a5c9f2a88dd41e9e1f0d2379.png

1.2 风险分析

QPS:QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。网站性能测试指标详解,更多看这篇文章。

Tips:最好不要在主库上数据库备份,大型活动前取消这样的计划。

1、效率低下的 sql:超高的 QPSTPS

2、大量的并发:数据连接数被占满( max_connection默认 100,一般把连接数设置得大一些)。

并发量:同一时刻数据库服务器处理的请求数量

3、超高的 CPU使用率:CPU资源耗尽出现宕机。

4、磁盘 IO:磁盘 IO性能突然下降、大量消耗磁盘性能的计划任务。解决:更快磁盘设备、调整计划任务、做好磁盘维护。

1.3 网卡流量:如何避免无法连接数据库的情况

1、减少从服务器的数量(从服务器会从主服务器复制日志) 2、进行分级缓存(避免前端大量缓存失效) 3、避免使用 select 进行查询 4、分离业务网络和服务器网络

1.4 大表带来的问题(重要)

1.4.1 大表的特点

1、记录行数巨大,单表超千万 2、表数据文件巨大,超过 10G

1.4.2 大表的危害

1、慢查询:很难在短时间内过滤出需要的数据

查询字区分度低 -> 要在大数据量的表中筛选出来其中一部分数据会产生大量的磁盘 io -> 降低磁盘效率

2.对 DDL影响:

建立索引需要很长时间:

MySQL-v<5.5 建立索引会锁表 MySQL-v>=5.5 建立索引会造成主从延迟( mysql建立索引,先在组上执行,再在库上执行)

修改表结构需要长时间的锁表:会造成长时间的主从延迟('480秒延迟')

1.4.3 如何处理数据库上的大表

分库分表把一张大表分成多个小表

难点:

1、分表主键的选择 2、分表后跨分区数据的查询和统计

1.5 大事务带来的问题(重要)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值