MySQL优化2

1.创建分区
create table goods(
-> id int auto_increment,
-> name varchar(32) not null default ”,
-> price int not null default 0,
-> primary key (id)
-> )
-> engine=Myisam charset=utf8
-> partition by key(id) partitions 10;
信息会被平均分摊到各个数据表里面。
2.四种分表分区算法
求余:
key 根据指定的字段进行分区设计
partition by key(id) partitions 10;
hash 根据指定的表达式进行分区设计–必须是主键的部分
partition by hash(id) partitions 6;
条件:
range 字段/表达式 符合某个条件范围的分区设计

   partition by range(字段/表达式)(
    partition 分区名字 values less than (常量),
)
     partition by range(year(pubdate))(
    -> partition hou70 values less than(1980),
    -> partition hou80 values less than(1990),
    -> partition hou90 values less than(2000),
    -> partition hou00 values less than(2010)
    -> );

list 字段/表达式 符合某个列表范围的分区设计

    partition by range(字段/表达式)(
     partition 分区名字 values in (n1,n2,n3),
)

key:该方式区分不明显(不一定会严格平均给分区分配数据),但是大方向明显
hash/range/list:会根据业务特点把数据写入到对应的分区表里边。
3,管理分区
求余(key,hash)算法管理
增加分区: alter table goods add partition partitions 2;
减少分区: alter table 表名 coalesce partition 数量;
条件(range,list)算法管理

alter table 表名 add partition(
        partition 分区名  values less than[in] (常量[列表]),
        partition 分区名  values less than[in] (常量[列表]),
        ....
    )

减少分区:

    alter table 表名 drop  partition 分区名称;

减少分区,会丢失对应分区的数据。
4.垂直分表
对记录进行分割并存储到许多不同的表,称为“水平分表”
对字段进行分割并存储到许多不同表,称为“垂直分表”
5.慢查询
查看慢查询是否开启: show variables like 'slow_query%';
开启慢查询日志:set global slow_query_log =1;
查看慢查询的时间阈值:show variables like 'long_query_time%';
设置时间阈值:set long_query_time=2;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值