• 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中的操作。

  • 相关阅读:
    Jmeter逻辑控制器
    python学习笔记——%占位符的使用
    python学习笔记——生成随机数
    python学习笔记——变量的规则
    loadrunner11中HTTP/HTML的HTML-base script的两种script type有什么区别?
    loadrunner11如何实时查看脚本的运行情况?
    loaderunner11回放脚本时如何设置【运行时行为】?
    appium学习笔记之——popupwindow控件元素无法定位
    Chrome、Firefox、IE等浏览器驱动diver程序存放目录
    npm方式安装appium环境所遇到的各种问题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309496.html
Copyright © 2020-2023  润新知