2、分区表

本文详细解析了MySQL分区表的概念,包括其逻辑与物理特性,以及如何通过分区提高读写性能。介绍了创建分区表的方法,分区键的选择,以及按hash、范围和列表进行分区的具体应用。同时,探讨了分区表在数据管理、查询优化和维护方面的优势。

什么是分区表

逻辑上表现一张表,与普通表进行的sql操作没有任何区别。物理上表现为通过多个文件保存数据文件,普通表是通过一个文件保存数据文件

分区表的影响

行数据保存在不同的磁盘文件中,mysql能同时对多个文件进行读写操作,提高mysql读写性能。
进行跨分区查询时,查询速度比不进行分区慢。进行查询时,可以在where条件上加上分区键筛选条件,避免跨分区扫描

创建分区表

//创建表时指定分区参数
CREATE TABLE `cate` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cate_name` char(40) DEFAULT NULL,
  `x` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB PARTITION by HASH(id) PARTITIONS 4
//PARTITION by 指定分区键
//PARTITIONS  分区个数

在这里插入图片描述
存放行数据的文件被拆分成4个文件
注意

  • 如果需要建立分区表,只能存在一个主键/或一个唯一键。(主键包含在唯一键除外,可以同时存在主键和唯一,但是这种情况,分区键必须是主键)
  • 如果表中存在 唯一键 或 主键,分区键必须是 唯一键或主键的一部分。

分区键 PARTITION by 的 选择

  • 对字段进行hash取模后,确定存放到某个文件
    HASH(字段),注意字段必须是一个整数,可以使用crc32()函数转成整数
    能够尽可能的将数据平分到每一个分区,适合进行等值查询
CREATE TABLE `user_login_log` (
  `user_login_log_id` int(10) unsigned primary key  AUTO_INCREMENT COMMENT '主键',
  `user_account_id` int(10) unsigned NOT NULL default 0  COMMENT '用户账号ID',
  `ip` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '登陆IP信息',
  `msg`	varchar(255) not null  DEFAULT '' comment '登陆简要说明' ,
  `create_time` datetime not null DEFAULT now() comment '登陆时间' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户登陆日志' 
partition by hash(user_login_log_id) 
partitions 4
  • 按范围进行分区
    数据行按照分区键指定的范围,存储到某个分区。
    适合使用日期类型的字段作为分区键,定期删除/归档某段时间的行数据
CREATE TABLE `user_login_log` (
  `user_account_id` int(10) unsigned NOT NULL default 0  COMMENT '用户账号ID',
  `ip` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '登陆IP信息',
  `msg`	varchar(255) not null  DEFAULT '' comment '登陆简要说明' ,
  `create_time` datetime not null DEFAULT now() comment '登陆时间' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户登陆日志' 
partition by range(year(create_time)) 
(
	partition p0 values less than(2015),
	partition p1 values less than(2016),
	partition p2 values less than(2017),
	partition p3 values less than(MAXVALUE)
)
insert into user_login_log (user_account_id,ip,msg,create_time) values (1,INET_ATON('127.0.0.1'),"正常登陆","2014-8-10");
insert into user_login_log (user_account_id,ip,msg,create_time) values (2,INET_ATON('127.2.0.1'),"正常登陆","2014-8-2");
insert into user_login_log (user_account_id,ip,msg,create_time) values (1,INET_ATON('127.6.0.1'),"正常登陆","2019-8-10");
insert into user_login_log (user_account_id,ip,msg,create_time) values (3,INET_ATON('127.0.8.1'),"正常登陆","2015-8-10");

需要删除掉2015年前的日志只需对p0分区进行删除

alter table user_login_log drop partition p0

添加新的分区

alter table user_login_log drop PARTITION p3
alter table user_login_log add PARTITION (partition p3 VALUES less than(2018))

对分区进行归档操作

//创建一个与原表具有相同表结构的表(不能是分区表)
CREATE TABLE `arch_user_login_log` (
  `user_account_id` int(10) unsigned NOT NULL default 0  COMMENT '用户账号ID',
  `ip` int UNSIGNED NOT NULL DEFAULT 0 COMMENT '登陆IP信息',
  `msg`	varchar(255) not null  DEFAULT '' comment '登陆简要说明' ,
  `create_time` datetime not null DEFAULT now() comment '登陆时间' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户登陆日志' 
//使用交换分区进行移动
alter TABLE user_login_log  exchange  partition  p0 with table arch_user_login_log
//删除原表的分区
alter table arch_user_login_log drop partition p0
  • 按列表进行分区
CREATE TABLE `user_login_log` (
  `user_account_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户账号ID',
  `ip` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '登陆IP信息',
  `msg` varchar(255) NOT NULL DEFAULT '' COMMENT '登陆简要说明',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登陆时间',
  `status` tinyint  DEFAULT 0 comment '账号状态: 0未激活,1正常,2禁止登陆'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户登陆日志'
partition by list (status) 
(
	partition p0 values IN (1),
	partition p1 values in (2),
	partition p2 values in (3)
)

查看每个分区保存了多少行数据

查看 information_schema.PARTTIONS表

select PARTITION_NAME,PARTITION_DESCRIPTION,TABLE_ROWS from information_schema.PARTITIONS where TABLE_NAME="user_login_log" and TABLE_SCHEMA="test"

在这里插入图片描述

"Mstar Bin Tool"是一款专门针对Mstar系列芯片开发的固件处理软件,主要用于智能电视及相关电子设备的系统维护与深度定制。该工具包特别标注了"LETV USB SCRIPT"模块,表明其对乐视品牌设备具有兼容性,能够通过USB通信协议执行固件读写操作。作为一款专业的固件编辑器,它允许技术人员对Mstar芯片的底层二进制文件进行解析、修改与重构,从而实现系统功能的调整、性能优化或故障修复。 工具包中的核心组件包括固件编译环境、设备通信脚本、操作界面及技术文档等。其中"letv_usb_script"是一套针对乐视设备的自动化操作程序,可指导用户完成固件烧录全过程。而"mstar_bin"模块则专门处理芯片的二进制数据文件,支持固件版本的升级、降级或个性化定制。工具采用7-Zip压缩格式封装,用户需先使用解压软件提取文件内容。 操作前需确认目标设备采用Mstar芯片架构并具备完好的USB接口。建议预先备份设备原始固件作为恢复保障。通过编辑器修改固件参数时,可调整系统配置、增删功能模块或修复已知缺陷。执行刷机操作时需严格遵循脚本指示的步骤顺序,保持设备供电稳定,避免中断导致硬件损坏。该工具适用于具备嵌入式系统知识的开发人员或高级用户,在进行设备定制化开发、系统调试或维护修复时使用。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值