MySQL——前言

什么决定了双十一的成败?

一天之内上千亿元的成交量,可能同一时刻数据库中就在执行上千万条查询,所以双十一的成败,从技术上来说在于数据库!哪些方面会影响数据库的性能呢?

1.sql查询速度
2.服务器硬件
3.网卡流量
4.磁盘IO

SQL查询速度

大量的并发和超高的CPU使用率会导致的问题
大量的并发:数据库连接数被挤满!
超高的CPU使用率:因CPU资源耗尽而出现宕机!

效率低下的SQL,随着访问量增长,QPS和TPS增长,处理每一个请求的sql时间很长,导致QPS降低,所以必须要优化查询语句,尽量避免select *的使用。

服务器硬件

服务器硬件主要是限制了读写的速度,好的硬件写入磁盘的速度就会更快。

网卡流量

风险:网卡IO会被占满,导致外部访问出现500错误。
避免无法连接数据库情况:
1.减少从服务器的数量(读写日志)
2.进行分级缓存(前端缓存)
3.避免使用select *进行查询,查询出没有必要的数据也会造成浪费
4.分离业务网络和服务器网络,避免主从同步,数据备份造成的影响。

其他方面影响数据库性能

一个表的数据量超过千万行就会造成影响或者表数据文件巨大,超过10G

但是这是相对的,与数据库文件的使用场景相关,用的少的数据库文件,很大对

数据库性能造成的影响并不大!

大表对查询的影响:

慢查询:很难再一定时间内过滤出所需要的数据。
产生大量的慢查询,拖慢网站的访问
所以要优化查询的方式

大表对DDL操作的影响

建立索引需要很长的时间

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

如何处理数据库中的大表

分库分表:把一张大表分成多个小表
难点:分表主键的选择
分表后跨分区数据的查询和统计

大事务带来的问题

什么是事务?
事务是数据库系统区别于其他一切文件系统的重要特性之一。

2.事务是一组具有原子性的sql语句,或是一个独立的工作单元,要么全部完成,要么全部失败

事务满足:原子性,一致性
隔离性,持久性

原子性:一个事务必须被是为一个不可分割的最小单元,要么全部执行功,要么全部失败,不可能只执行一部分。

一致性:是指事务讲数据库从一种一致性状态转换到另外一种一致性状态,数据库的完整性没有任何变化。(转账前后金额相同)


隔离性:隔离性要求一个事务对数据库中的数据的修改,在未提交完成之前对于其他事务是不可见的

未提交读:事务可以读取未提交的数据(read uncommitited)
已提交读:默认隔离,数据可能不一致
可重复读:数据一致
可串行化:严格数据一致性,无并发

隔离性越高并发性越低
 
事务的持久性
一旦事务提交,则其所作的修海就会永久保存到数据库中,此时即使系统崩溃已经提交的数据也不会丢失。

什么是大事务?
运行时间比较长,操作的数据比较多的事务。锁定太对的数据,造成大量的阻塞和锁超时。

回滚所需要时间比较长

执行时间长,容易造成主从延迟

如何处理大事务?
1.避免一次处理太多的数据(分批处理)

2.移除不必要的在事务中的select中的操作。

发布了123 篇原创文章 · 获赞 74 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43927892/article/details/102538591