高性能mysql简要分析

在主服务器中不要远程备份,或者在大型活动之前停止远程备份等耗费资源的操作

影响数据库查询性能因素:sql查询速度,服务器硬件,网卡流量,磁盘IO

超高QPS和TPS会影响sql查询效率

QPS是一秒钟处理请求的数量

大多数80%的优化都可以通过慢查询解决,优化sql

风险:大量的并发和超高的CPU使用率

大量的并发:数据库连接数被占满(max_connections默认100)

超高的CPU使用率:因CPU资源耗尽而出现宕机

磁盘IO风险:磁盘IO性能突然下降(使用更快的磁盘设备),其他大量消耗磁盘性能

的计划任务(调整计划任务,做好磁盘维护)

网卡流量风险:网卡IO被占满,可避免无法连接数据库的情况:减少从服务器数量,进行分级缓存

,避免使用select * 进行查询,分离业务网络和服务网络

还有什么会影响数据库性能:大表和大事务

大表:1、记录行数巨大,单表超过千万行数据

           2、表数据文件巨大,表数据文件超过10G

大表对DDL操作的影响:

1、建立索引需要很长时间,mysql版本<5.5建立索引会锁表

mysql版本>=5.5不会锁表但是会引起主从延迟。

2、修改表结构需要长时间锁表:会造成长时间的主从延迟。影响正常的数据操作

如何处理数据库中的大表:

一、分库分表将一张大表分成多个小表:难点:①分表主键的选择

②分表后跨分区数据的查询和统计

二、对大表进行历史数据归档--会减少对前后端业务的影响

前端表结构无变化,影响不大,不过需要增加一个历史查询的入口。(归档表可放在另一个服务器上)

难点:第一个难点,归档时间点的选择。(归档数据很少使用,如订单列表归档一年前的数据,日志类的归档一周前的数据)

第二个难点,如何进行归档,对大表的增删改查需要特别小心(轻则主从延迟,重则造成阻塞,影响正常访问)

大事务:什么是事务--事务是数据库系统区别于其他一切文件系统的重要特征之一(数据库服务器崩溃后可以恢复崩溃前的数据,保存数据的一致性)

事务是一组具有原子性的sql语句,或是一个独立的工作单元

(事务中的sql要么全部完成要么全部失败)

事务四大特性:原子性,一致性,隔离性,持久性

原子性:事务要么全部成功,要么全部失败

一致性:在事务开始之前和事务结束之后,都必须保持一致性状态

隔离性:在一个事务未结束之前对于其他事务是不可见的

mysql隔离级别默认可重复读

(四种隔离性:未提交读,事务可以读取未提交的数据,脏读(不建议使用)。

                         已提交读(默认隔离级别已提交读,mysql是例外默认可重复读),只能读取已提交的数据。

                         可重复读   

                         可串行化

(四种隔离级别的并发性由高到底)

持久性:事务一旦提交,所做的更改就会永久保存到数据库中

什么是大事务:运行时间比较长,操作的数据比较多的事务

风险:1、锁定太多数据,造成大量的阻塞和超时

2、回滚所需要的时间比较长。

3、容易造成主从延迟

如何处理大事务:避免一次性处理太多的数据(增删改查),可以分批次来进行操作

移出不必要的select的操作

猜你喜欢

转载自blog.csdn.net/qq_40876291/article/details/86503909