高性能的mysql初探之六

如何做到一个好的查询?

 schema设计,索引设计,查询语句设计(走索引,limit语句尽量减少扫描的行,union语句优化,排序和分组走索引,没有索引就走关联查询的标识列,count的应用)还有可以通过一些高级特性如分区

业务设计优化:垂直拆分(字段拆分,多次查询少关联),水平拆分(分库,分表),归档(增加写的压力,把不同状态的表记录写到不同的表中,减少表中没必要扫描的行)

评估三大指标:响应时间,扫描的行,返回的行

 

分区的好处:

     太大的表无法走索引(查询在覆盖索引范围内除外),索引大而且容易产生碎片,多条记录去回表查询字段会产生很多次随机i/o。而分区相当与一个大的索引概念,分区表数据容易维护,批量删除大量数据可以直接使用清除

整个分区的方式,还可以对独立一个分区做优化,检查和修复等操作。分区表可以存放在不同的物理设备。分区表可以避免单个索引的互斥访问(每个分区的索引都是单独构建的,如果查询的索引列互斥条件分别在两个分区时,可以走索引加快速度)。分区可以独立

备份和恢复

分区的限制:

 一个表的分区最多只有1024个分区;分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来;分区表无法使用外键约束;查询分区会先锁住底层表;

分区的建立:

一个表分区最好不要超过150个;热点单独分区;创建分区时使用了表达式,查询时只能根据列来过滤分区;分区键最好和索引列一致(因为不一致的化,根据索引查询会去查询所有分区的索引,因为每个分区的索引都是独立的)

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值