对数据库性能影响的方面

对数据库性能影响的几个方面

大表对数据库性能的影响

  • 大表的一般定义
    • 记录行数巨大(单表超过千万行)
    • 表数据文件巨大(超过10G)
  • 大表对查询的影响
    • 慢查询:很难在一定的时间内过滤出所需要的数据
    • 来源少,区分度低,大量的磁盘IO,降低磁盘效率,大量慢查询
  • 大表对DDL操作的影响
    • 建立索引需要很长的时间
      • 风险:MySQL版本<5.5 建立索引会锁表,MySQL版本>=5.5虽然不会锁表但是会引起主从延迟
    • 修改表结构需要长时间锁表
      • 风险:会造成长时间的主从延迟;影响正常的数据操作;
  • 处理数据库中的大表
    • 分库分表把一张大表分成多个小表
      • 难点:分表主键的选择; 分表后跨分区数据的查询和统计
    • 大表的历史数据归档
      • 减少对前后端业务的影响
      • 难点:归档时间点的选择

大事务对数据库性能的影响

  • 什么是事务

    • 事务是数据库系统区别于其它一切文件系统的重要特性之一
    • 事务是一组具有原子性的SQL语句,或是一个独立的工作单元
  • 事务的原子性

  • 事务的一致性

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

    • 未提交读(脏读)
    • 已提交读(不可重复读)
    • 可重复读 (innodb的默认隔离级别)
    • 可串行化(最糟糕的隔离级别,锁严重)
  • 事务的持久性

  • 什么是大事务

    • 定义:运行时间比较长,操作的数据比较多的事务
    • 风险
      • 锁定太多的数据,造成大量的阻塞和锁超时
      • 回滚所需时间比较长
      • 执行时间长,容易造成主从延迟
  • 如何处理

    • 避免一次处理太多的数据
    • 移出不必要在事务中的SELECT操作
  • 服务器硬件,CPU、内存、磁盘IO

  • 服务器操作系统

  • 数据库存储引擎的选择(插件式的存储引擎)

    • MyISAM:不支持事物,表级锁
    • InnoDB:事物级存储引擎,完美支持行级锁,外键,事务ACID特性
  • 数据库参数配置

  • 数据库结构设计和SQL语句

服务器硬件对性能的影响

  • 如何选择CPU
    • 频率&数量
    • 是否是CPU密集型(更好的CPU)
    • MySQL不支持多CPU对同一SQL并发处理
    • 系统并发量(更对的CPU)
    • 衡量数据库处理能力的指标(QPS:同时处理SQL的数量)
    • web类应用:核心数量比频率重要
  • 内存提高数据库性能
    • MyISAM索引缓存内存,数据用OS缓存
    • InnoDB在内存中缓存索引和数据
  • 磁盘的配置和选择
    • 传统机器硬盘(常见,使用最多,价格低,存储空间打,读写慢)
      • 存储容量、传输速度、访问时间、主轴转速、物理尺寸
    • 使用RAID增加传统机器硬盘的性能
      • RAID是磁盘冗余队列的简称(多个容量小的磁盘组成一组容量大的磁盘,并提供数据冗余来保证数据完整性的技术)
      • RAID 0 磁盘串行,没有提供冗余或错误修复能力
      • RAID 1 磁盘镜像,最大限度保证系统的可靠性和可修复性
      • RAID 5 分布式奇偶校验磁盘阵列,两块磁盘出现问题则无法修复,以读为主的,从数据库服务器
      • RAID 10数据库最好的选择,先做RAID1之后在对两组RAID1做RAID0,相对于RAID5重建起来更简单,速度也更快
等级特点是否冗余盘数
RAID0便宜,快速,危险N
RAID1高速读,简单安全2
RAID5安全,成本折中N+1取决于最慢的盘
RAID0贵,高速,安全2N
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值