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实验项目二——猜数游戏
    C语言用面向对象的思想写贪吃蛇
    各操作系统系统快捷键(更新)
    深入学习 memset 函数
    PHP开发环境搭建及开发工具
    Zepto v1.0-1源码注解
    Nginx 反向代理配置
    nginx 安装
    JQ实现右下角scrollTop()事件
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309496.html
Copyright © 2011-2022 走看看