mysql 西安_MySQL分区维护
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注释:实际上,本节讨论的命令还没有在MySQL 5.1中实现, 在这里提出的目的,是为了在5.1版投产前的开发周期期间,引出来自用户测试该软件的反馈意见。(换句话说,就是“请不要反馈这样的缺陷,说这些命令不起作用”)。随着MySQL5.1版开发的继续,这些信息很有可能发生变化。随着分区功能的实现和提高,我们将更新本节的内容。
MySQL 5.1中可以执行许多分区维护的任务。对于分区表,MySQL不支持命令CHECK TABLE,OPTIMIZE TABLE,ANALYZE TABLE,或REPAIR TABLE。作为替代,可以使用ALTER TABLE 的许多扩展来在一个或多个分区上直接地执行这些操作,如下面列出的那样:
· 重建分区: 这和先删除保存在分区中的所有记录,然后重新插入它们,具有同样的效果。它可用于整理分区碎片。
示例:
ALTER TABLE t1 REBUILD PARTITION (p0, p1);
· 优化分区:如果从分区中删除了大量的行,或者对一个带有可变长度的行(也就是说,有VARCHAR,BLOB,或TEXT类型的列)作了许多修改,可以使用“ALTER TABLE ... OPTIMIZE PARTITION”来收回没有使用的空间,并整理分区数据文件的碎片。
示例:
ALTER TABLE t1 OPTIMIZE PARTITION (p0, p1);
在一个给定的分区表上使用“OPTIMIZE PARTITION”等同于在那个分区上运行CHECK PARTITION,ANALYZE PARTITION,和REPAIR PARTITION。
· 分析分区:读取并保存分区的键分布。
示例:
ALTER TABLE t1 ANALYZE PARTITION (p3);
· 修补分区: 修补被破坏的分区。
示例:
ALTER TABLE t1 REPAIR PARTITION (p0,p1);
· 检查分区: 可以使用几乎与对非分区表使用CHECK TABLE 相同的方式检查分区。
示例:
ALTER TABLE trb3 CHECK PARTITION (p1);
这个命令可以告诉你表t1的分区p1中的数据或索引是否已经被破坏。如果发生了这种情况,使用“ALTER TABLE ... REPAIR PARTITION”来修补该分区。
还可以使用mysqlcheck或myisamchk 应用程序,在对表进行分区时所产生的、单独的MYI文件上进行操作,来完成这些任务。
获取关于分区的信息
本节讨论获取关于现有分区的信息。这个功能仍然处于计划阶段,所以现阶段在这里描述的,实际上是我们想要在MySQL 5.1中实现的一个概观。
如在本章中别处讨论的一样,在SHOW CREATE TABLE的输出中包含了用于创建分区表的PARTITION BY子句。例如:
mysql> SHOW CREATE TABLE trb3\G*************************** 1. row *************************** Table: trb3Create Table: CREATE TABLE `trb3` ( `id` int(11) default NULL, `name` varchar(50) default NULL, `purchased` date default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY RANGE (YEAR(purchased)) ( PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM, PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM, PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM)1 row in set (0.00 sec)
注释:当前,对于按HASH或KEY分区的表,PARTITIONS子句并不显示。 (Bug #14327)
SHOW TABLE STATUS用于分区表,它的输出与用于非分区表的输出相同,除了引擎(Engine)列总是包含'PARTITION'值。(关于这个命令的更多信息,参见13.5.4.18节,“SHOW TABLE STATUS语法”)。要获取单个分区的状态信息,我们计划实现一个SHOW PARTITION STATUS命令(请参见下面)。
计划用于分区表的、两个附加的SHOW命令是:
· SHOW PARTITIONS
这个命令预期其功能类似于SHOW TABLES和SHOW DATABASES,除了该命令将列出的是分区而不是表或数据库。这个命令的输出可能包含单个称为Partitions_in_tbl_name 的列,其中tbl_name 是分区表的名字。对于SHOW TABLES命令而言,如果一旦选择了一个数据库,随后该数据库将作为SHOW TABLES命令的默认数据库。但是由于SHOW PARTITIONS命令不可能用这样的方式来“选择”一个表,它很可能需要使用FROM子句,以便MySQL知道要显示的是哪个表的分区信息。
· SHOW PARTITION STATUS
这个命令将提供关于一个或多个分区的详细状态信息。它的输出很可能包含有与SHOW TABLE STATUS 的输出相同或类似的列,此外,还包括显示用于分区的数据和索引路径的附加列。这个命令可能支持LIKE和FROM子句,这样使得通过名字获得关于一个给定分区的信息,或者获得关于属于指定表或数据库的分区的信息,成为可能。
扩展INFORMATION_SCHEMA 数据库的计划也在进行中,以便提供关于分区表和分区的信息。这个计划当前还处一个在非常早的阶段;随着补充的信息变得可用,以及任何新的、与分区有关的INFORMATION_SCHEMA扩展得以实现,我们将更新手册相关部分的内容。
这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。
在改变分区设置方面,按照HASH分区或KEY分区的表彼此非常相似,但是它们又与按照RANGE或LIST分区的表在很多方面有差别。所以,本节只讨论按照HASH或KEY分区表的修改。
不能使用与从按照RANGE或LIST分区的表中删除分区相同的方式,来从HASH或KEY分区的表中删除分区。但是,可以使用“ALTER TABLE ... COALESCE PARTITION”命令来合并HASH或KEY分区。例如,假定有一个包含顾客信息数据的表,它被分成了12个分区。该顾客表的定义如下:
CREATE TABLE clients (http://www.hdd-120.cn/ id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE)PARTITION BY HASH( MONTH(signed) )PARTITIONS 12;
要减少分区的数量从12到6,执行下面的ALTER TABLE命令:
mysql> ALTER TABLE clients COALESCE PARTITION 6;Query OK, 0 rows affected (0.02 sec)
对于按照HASH,KEY,LINEAR HASH,或LINEAR KEY分区的表, COALESCE能起到同样的作用。下面是一个类似于前面例子的另外一个例子,它们的区别只是在于表是按照LINEAR KEY 进行分区:
mysql> CREATE TABLE clients_lk ( -> id INT, -> fname VARCHAR(30), -> lname VARCHAR(30), -> signed DATE -> ) -> PARTITION BY LINEAR KEY(signed) -> PARTITIONS 12;Query OK, 0 rows affected (0.03 sec) mysql> ALTER TABLE clients_lk COALESCE PARTITION 6;Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0
COALESCE不能用来增加分区的数量,如果你尝试这么做,结果会出现类似于下面的错误:
mysql> ALTER TABLE clients COALESCE PARTITION 18;错误1478 (HY000): 不能移动所有分区,使用DROP TABLE代替
要增加顾客表的分区数量从12到18,使用“ALTER TABLE ... ADD PARTITION”,具体如下:
ALTER TABLE clients ADD PARTITION PARTITIONS 18;
注释:“ALTER TABLE ... REORGANIZE PARTITION”不能用于按照HASH或HASH分区的表。
mysql 西安_MySQL分区维护相关推荐
- mysql分区方法_mysql 分区PARTITIONS之分区方法
分区依据的字段必须是主键的一部分,分区是为了快速定位数据,因此该字段的搜索频次较高应作为强检索字段,否则依照该字段分区毫无意义 mysql为我们提供的分区方法有下列几种 一.range.list 二. ...
- mysql维护计划_MySQL服务维护笔记
服务的启动和停止 1.复制缺省的mysql/var/mysql到 /data/app_1/目录下, 2.MySQLD的启动脚本:start_mysql.sh #!/bin/sh rundir=`dir ...
- java mysql 分区表_mysql 分区有实用价值吗?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 小和尚的庙里住进了一位女施主. 小和尚吓坏了,逃去殿里敲木鱼.山下的女人是老虎,现在老虎居然住进庙里了,看来自己和师父是要被吃了. 女施主闲暇无事,也走到 ...
- mysql的hash分区_MySQL中的分区(五)HASH分区
HASH分区主要用来分散热点读,取保数据在预先确定个数的分区中尽可能的平均分布.对一个表执行HASH分区时,MySQL会对分区键应用一个散列函数,一次确定数据应该放在哪一个分区中. MySQL分区支持 ...
- mysql 分区表_MySQL 分区分表应用场景分析和分区中可能遇到的坑点
MySQL的分区和分表应用场景分析 在日常工作中当我们的某张表的数据量过大的时候,首当其冲的可能就是进行分区和分表,但是是如何分区或者分表都要结合一点的业务场景下进行分析,才会显著的提升性能,来聊一聊 ...
- mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解
本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...
- mysql 分区键_mysql分区
分区 就访问数据库的应用而言,逻辑上只有一个表或一个索引,但是实际上这个表可能由数10个物理分区对象组成,每个分区都是一个独立的对象,可以独自处理,可以作为表的一部分进行处理. 分区对应用来说是完全透 ...
- mysql 分区索引_MySQL 分区建索引
介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表,从"information_schema.INNODB_SYS_TABLES"系统表 ...
- mysql hash分区 数目_MySQL 分区
MySQL 分区 分区是指根据一定的规则,把一个表分解成多个更小更易管理的部分,逻辑上只有一个表或一个索引, 但是实际上该表可能由数个物理分区对象组成,每个分区都是一个独立的对象,每个分区可以独自处理 ...
最新文章
- linux egg,Linux服务器部署egg,日志
- 一图看清全球270家典型区块链服务商
- json 是个什么东西?
- python函数文档说明调用方式_Python 跨.py文件调用自定义函数说明
- 【组合数学】组合恒等式 ( 递推 组合恒等式 | 变下项求和 组合恒等式 简单和 | 变下项求和 组合恒等式 交错和 )
- Android 读取assets文件下的txt文件
- 20165231 2017-2018-2 《Java程序设计》第5周学习总结
- java空文本_输出到文本文件,控制台为空-Java
- 菜鸟python_手把手教你,菜鸟也能用Python写一个2048游戏
- 随想录(35岁后的程序员)
- 见过NTP服务,没见过网络流量到200M左右的NTP服务
- python转换成exe后会出现dos框_解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题...
- js生成java uuid_javascript 生成UUID
- 经纬度转换器_FME应用小实例:线面经纬度集合快速转几何图形
- 7-3 人民币与美元汇率兑换程序 (10分)
- OpenGL GLM环境配置
- Unknown label type: ‘continuous
- 秃如其来第一步之安装JDK
- 转载 | 年度盘点!Flink 社区全年的精华内容都在这里啦
- CV、CA、CT运动模型的理解和matlab程序简单实现