zoukankan      html  css  js  c++  java
  • 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中的操作。

  • 相关阅读:
    java的构造方法 java程序员
    No result defined for action cxd.action.QueryAction and result success java程序员
    大学毕业后拉开差距的真正原因 java程序员
    hibernate的回滚 java程序员
    验证码 getOutputStream() has already been called for this response异常的原因和解决方法 java程序员
    浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓 java程序员
    你平静的生活或许会在某个不可预见的时刻被彻底打碎 java程序员
    Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下 java程序员
    poj1416Shredding Company
    poj1905Expanding Rods
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309496.html
Copyright © 2011-2022 走看看