枯痕个人博客
立即登录 马上注册
当前位置: 大后端 > Mysql > mysql分区表

查看是否支持分区表

show plugins

partition行是否有数据

hash分区特点

根据mod(分区键、分区数的值吧数据行存储在不同分区中)

数据可以平均的分布在各个分区中

hash分区的键值必须是一个int类型的值,或是通过函数可以转为int类型

如何建立hash分区表

create table “表名”(字段名…)engine = innodb partition by hash(id/user_id……)partitions 4;

create table “表名”(字段名…)engine = innodb partition by hash(unix_timestamp(last_time/update_time))partitions 4;

按照范围分区

RANGE分区特点:

根据分区键值的范围把数据行存储到表的不同分区中

多个分区的范围要连接,但是不能重复

默认情况下使用values,less,than属性,即每个分区不包含指定的那个值

如何建立

create table “*”(

“customer_id”int(10)unsigned not null,

“login_time”timestamp not null,

“login_ip”int(10)unsigned not null,

“login_type”tinyint(4)not null)

engine = innodb

partition by range (customer_id)

partition p0 values less than(1000),(0-999)

partition p1 values less than (2000), (1000-1999)

partition p2 values less than (3000),(2000-2999)

partition p3 values less than maxvalue);(》3000)

range分区使用场景:

分区键为日期或者时间类型

所有查询中都包含分区键

定期为分区范围清理数据

list分区

list分区特点:

按分区键取值的列表进行分区

同范围分区一样,各分区的列表值不能重复

每一条数据必须能找到对应的分区列表,否则数据插入失败。

如何创建

create table “*”(同上)

partition by list (login_type)(

partition p0 values in(1,3,5,7,9),

partition p1 values in (2,4))

Eg:业务场景保存一年的用户登录日志数据

create table “*”(同上)

partition by range(year(login_tine))(

partition p0 values less than (2020),

partition p1 values less than (2021))

分区表注意事项:

结合业务需求确定分区键,避免跨分区查询

对分区表查询最好在where从句中包含分区键

具有主键唯一索引的表,主键或唯一索引必须是分区键一部分

导入数据:mysql -uroot -p 数据库名< sql文件名.sql

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(1) 打赏
欢迎打赏您的小可爱~~~~

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"mysql分区表"

最新评论

    暂无留言哦~~

博客简介

枯痕个人博客: xiaole.biz,一个关注Web后端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的后端博客,期待您的参与。

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 105 篇
  • 草稿数目: 1 篇
  • 分类数目: 26 个
  • 独立页面: 4 个
  • 评论总数: 9 条
  • 链接总数: 5 个
  • 标签总数: 169 个
  • 注册用户: 8 人
  • 访问总量: 8,756,347 次
  • 最近更新: 2021年7月23日
服务热线:
 156144**650

 QQ在线交流

 旺旺在线