- 浏览: 130880 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zzhanp:
完了?
工厂模式 -
greatwqs:
《How Tomcat WorK 》?
《How Tomcat Words 》读后理解 -
yusong0715:
...
工厂模式 -
Garfield.Geng:
// Spring有做过的。
/**
* Test ...
年末整理十四 MD5加密 -
phz50:
这帖子太逗了
女朋友想要什么
获得分区信息
MySQL可以通过如下方式来获取分区表的信息:
Show create tabe tablename; //表详细结构
show table status; //表的各种参数状态
select * from information_schema.partitions where table_name = '' ;//通过数据字典来查看表的分区信息
explain partitions select * from table; // 通过此语句来显示扫描哪些分区,及他们是如何使用的.
修改分区
修改部分分区:
由于我们平常使用的数据库大都是动态运行的,所以只对某个表分区进行修改就OK了。
可以对range或list表分区进行add或drop,也可以对hash或key分区表进行合并或分解。这些动作都在alter table语句里进行。
Reorganize partition关键字可以对表的部分分区或全部分区进行修改,并且不会丢失数据。
Splitting即分解一个已有分区:
Alter table orders_range
reorganize partition p0 into
(
partition n0 values less than(5000),
partition n1 values less than(10000)
);
Merge分区:像上面把p0分成n0和n1,现在在把2个合并为一个。
Alter table orders_range reorganize partition n0,n1 into
(
Partition p0 values less than(10000)
);
修改所有的分区:在into关键字之前或之后都指定多个分区
Alter table orders_range reorganize partition p0,p1,p2,p3,p4,p5 into
(
Partition r0 values less than(25000),
Partition r1 values less than(50000),
Partition r2 values less than(maxvalue)
);
Coalesce 合并分区:
Merge分区的另一种方法就是alter table….coalesce partition语句,你不能对hash或key分区进行删除
Alter table orders_key coalesce partition1;
Redefine重定义分区
Alter table orders_range partition by hash(id) partitions 4;
对分区进行删除 (删除、删除所有分区)
Drop 分区:
可以对range或list类型的分区通过drop partition 关键字进行删除
Alter table orders_range drop partition p0;
注意:
1.对这个分区进行删除时,你会把这个分区的所有数据进行删除,与delete语句相等;
2.在做alter table..drop partition时,必须有drop权限;
3.运行这个删除命令,它不会返回删除了的行,可以通过select count()语句查看。
如果想对多个分区进行删除,可以使用如下命令语句:Alter table orders_range drop partition p1,p2;
删除所有分区
通过如下命令语句删除表中所有分区,最后是一个正规表.
Alter table orders_range remove partitioning;
##########################################12-23##############
1. 只有MYISAM引擎的表支持 DATA DIRECTORY/INDEX DIRECTORY, 经过半天的折腾,在windows环境下使用MYISAM并设置不同的分区存储位置将会产生一个无法使用的表!尽管能创建成功!
2. 如果用来分区的字段不是主键, 那么该表将不能使用主键类型的字段及唯一索引字段,通过老外的文档的文档中,有一种变通的解决方法,也就是使用复合主键! 主键本身肯定是唯一的,那么再增加一个或两个字段,复合主键的值依然是唯一的,所以可以用来变通,但复合主键会给表带来什么影响,暂时没查到资料!
3. 分区后的数据在单机单进程的查询并看不出性能上有非常大的差异,甚至会出现分区表比未分区表更慢几毫秒,哪怕是一百万的数据!
4.分区后应该更注意查询条件与索引的使用! 命中率低下的话,也许分区的性能会更慢更差!
##############################################3
在MySQL5.1和以上版本都能够支持表的分区了,今天也试了一下。查询效率确实是很高,不过每跨一个分区基本就多一倍时间。
Mysql分区表局限性总结:
一、关于Partitioning Keys, Primary Keys, and Unique Keys的限制:
在5.1中分区表对唯一约束有明确的规定,每一个唯一约束必须包含在分区表的分区键(也包括主键约束)。
二、关于存储引擎的限制
MERGE引擎不支持分区,分区表也不支持merge。
FEDERATED引擎不支持分区。这限制可能会在以后的版本去掉。
CSV引擎不支持分区
BLACKHOLE引擎不支持分区
在NDBCLUSTER引擎上使用分区表,分区类型只能是KEY(or LINEAR KEY) 分区。
当升级MYSQL的时候,如果你有使用了KEY分区的表(不管是什么引擎,NDBCLUSTER除外),那么你需要把这个表dumped在reloaded。
分区表的所有分区或者子分区的存储引擎必须相同,这个限制也许会在以后的版本取消。
不指定任何引擎(使用默认引擎)。
所有分区或者子分区指定相同引擎。
三、关于函数的限制
在mysql5.1中建立分区表的语句中,只能包含下列函数:
ABS()
CEILING() and FLOOR() (在使用这2个函数的建立分区表的前提是使用函数的分区键是INT类型)
DAY()
DAYOFMONTH()
DAYOFWEEK()
DAYOFYEAR()
DATEDIFF()
EXTRACT()
HOUR()
MICROSECOND()
MINUTE()
MOD()
MONTH()
QUARTER()
SECOND()
TIME_TO_SEC()
TO_DAYS()
WEEKDAY()
YEAR()
YEARWEEK()
四、其他限制
4.1 对象限制
下面这些对象在不能出现在分区表达式
Stored functions, stored procedures, UDFs, or plugins.
Declared variables or user variables.
4.2 运算限制
支持加减乘等运算出现在分区表达式,但是运算后的结果必须是一个INT或者NULL。
|, &, ^, <<, >>, , ~ 等不允许出现在分区表达式。
4.3 sql_mode限制
官方强烈建议你在创建分区表后,永远别改变mysql的sql_mode。
因为在不同的模式下,某些函数或者运算返回的结果可能会不一样。
4.4 Performance considerations.(省略)
4.5 最多支持1024个分区,包括子分区。
当你建立分区表包含很多分区但没有超过1024限制的时候,
如果报错 Got error 24 from storage engine,那意味着你需要增大open_files_limit参数。
4.6 不支持外键。MYSQL中,INNODB引擎才支持外键。
4.7 不支持FULLTEXT indexes(全文索引),包括MYISAM引擎。
4.8 不支持spatial column types。
4.9 临时表不能被分区。
4.10 log table不支持分区。
5.11 分区键必须是INT类型,或者通过表达式返回INT类型,可以为NULL。
唯一的例外是当分区类型为KEY分区的时候,可以使用其他类型的列作为分区键( BLOB or TEXT 列除外)。
5.12 分区键不能是一个子查询。 A partitioning key may not be a subquery, even if that subquery resolves to an integer value or NULL
5.13 只有RANG和LIST分区能进行子分区。HASH和KEY分区不能进行子分区。
5.14 分区表不支持Key caches。
5.15 分区表不支持INSERT DELAYED.
5.17 分区表不支持mysqlcheck和myisamchk
在5.1.33版本中已经支持mysqlcheck和myisamchk
5.18 分区表的分区键创建索引,那么这个索引也将被分区。分区键没有全局索引一说。
5.19 在分区表使用ALTER TABLE … ORDER BY,只能在每个分区内进行order by。
############################################################
我按年月对数据表进行分区,如下命令
mysql> create table tx (
-> id int,
-> info_time timestamp
-> )
-> PARTITION BY RANGE(info_time div 100)
-> (
-> PARTITION p_2008_11 VALUES LESS THAN (200812),
-> PARTITION p_2008_12 VALUES LESS THAN (200901),
-> PARTITION p_2009_01 VALUES LESS THAN (200902),
-> PARTITION p_2009_02 VALUES LESS THAN (200903),
-> PARTITION p_2009_03 VALUES LESS THAN (200904),
-> PARTITION p_2009_04 VALUES LESS THAN (200905),
-> PARTITION p_catch_all VALUES LESS THAN MAXVALUE
-> );
Query OK, 0 rows affected (0.16 sec)
mysql>
####################################
1. SHOW CREATE TABLE
可以查看创建分区表的CREATE语句
2. SHOW TABLE STATUS
可以查看表是否为分区表
3. 查看INFORMATION_SCHEMA.PARTITIONS表
可以查看表具有哪几个分区、分区的方法、分区中数据的记录数等重要信息
4. EXPLAIN PARTITIONS SELECT
查看select语句怎样使用分区
###########################################################
mysql 分区表没有全局索引 by ivan
因此表分区要求涉及的列都包含在pk和uk里面
这样就可以保证插入和更新的值在某个分区里是唯一的时候,那么全局就一定是唯一的
但是带来的问题是,如果一张表有2列唯一索引的时候,这表就没法分区了。
利用分区表对mysql进行分区
查询的时候
如果是针对分区的列尽享查询则速度很快
如果是针对其他的列进行查询就很慢
比未分区的还要慢
这张表大约容量30G,数据库服务器内存16G,无法一次载入。就是这个造成了问题。
这条SQL有两个条件,ID一到五十万和Program_id一到四千,因为program_id范围小得多,mysql选择它做为主要索引。
先通过索引文件找出了所有program_id在1到4000范围里所有的id,这个过程非常快。
接下来要通过这些id找出表里的记录,由于这些id是离散的,所以mysql对这个表的访问不是顺序读取。
而这个表又非常大,无法一次装入内存,所以每访问一条记录mysql都要重新在磁盘上定位并把附近的记录都载入内存,大量的IO操作导致了速度的下降。
#################################################################3
建议分两个库,一个库专门用来写的,另外一个用来读的,引擎是MYISAM
写入:bdb 内存,查询: myisam 分区
innodb 支持行锁 160笔/s 80个并发的话,每秒才2笔
估计每条记录不大,innodb用内存表应该能应付
如果innodb效果不好的话,用bdb(程序就需要修改了)
瓶颈不在io,在线程切换上
避免查询和插入争夺机器io
发表评论
-
hashmap数据结构分析的还可以
2011-09-30 15:09 797http://www.iteye.com/topic/9072 ... -
webtrends 分析
2011-07-13 17:41 1725目标: 跨页面跨域轨迹分析 大网站监控服务的部署 日志 ... -
并发服务器模型
2011-07-12 23:41 1059并发服务模型: 预先分配多线程数,使用互斥锁 预先分配多进 ... -
怎样解决南北互通的难题?
2011-07-12 23:18 1017http://www.west263.com/info/h ... -
HTTP REFERER 与防图片盗链
2011-06-23 14:44 1823什么是HTTP Referer 简言 ... -
HTTP协议的请求响应模式
2011-06-23 11:09 1948HTTP协议的request/response ... -
oracle错误码大全
2011-06-20 10:50 1333转载: http://laoshifu.iteye.com/b ... -
ORA-00604 记录
2011-06-20 10:47 2680ORA-00600: 内部错误代码,参数: [], [], [ ... -
随笔记得总结
2011-06-08 22:42 766webservice bingo RPC -
nginx
2011-06-03 18:37 658nginx -
HTTP状态信息
2011-06-03 15:20 830在Wininet下使用http进行异步传输数据,通过一个回调函 ... -
HTTP协议header头域
2011-05-30 17:33 870HTTP协议header头域 摘自: h ... -
tomcat点滴之性能 部分参数说明
2011-05-23 15:11 885tomcat性能调整的几点: 1. enableLookup ... -
oracle 时间相减
2011-04-26 18:04 1456oracle 两个时间相减 默认的是天数 oracl ... -
年末整理十四 MD5加密
2011-01-28 18:47 1122import java.io.UnsupportedEncod ... -
年末整理十三
2011-01-28 18:46 1031############################### ... -
年末整理十二
2011-01-28 18:43 906安装MySQL 时,系统提示:Cannot create wi ... -
年末整理十一
2011-01-28 18:38 634摘要: 今天同学们在群里讨论oracle的count( ... -
年末整理九 mysql存储过程例子
2011-01-28 18:29 1087create procedure uchome_blog_pr ... -
年末整理八 引擎MYSQL
2011-01-28 18:28 1191显示引擎的命令得到一 ...
相关推荐
初中语文文摘社会年末的表情
【标题】: 大学生学年年末鉴定表内容解析与成长指南 【描述】: 学年年末鉴定表是大学生回顾和评估个人学习、生活和成长的重要文档,它旨在促进自我反思,提升个人能力。 【标签】: 大学课件,个人发展,社交技巧 ...
2、代码特点:今年全新,手工精心整理,放心引用,数据来自权威,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3...
标题和描述中提到的文件是"行业数据-2000-2019年中国上海市年末常住人口.rar",这表明我们拥有一个压缩文件,其中包含关于中国上海市过去二十年间,即从2000年至2019年,每年年末常住人口的数据。这个压缩包中的唯一...
0195.中国2017年按行业分组的年末城镇单位从业人员统计(十三).xls
本数据基于各地公布数据,经数据处理软件汇总、整理、计算得来,亲测可用。 主要指标: 行政区划代码 地区 长江经济带 经度 纬度 年份 地区生产总值(亿元) 年末常住人口(万人) 本数据文件名上列出的指标 数据无缺失...
本数据整理1984年全国各地级市的年末总人口数,年末邮电局数、年末固定电话机数、年末邮电业务总量、年末每百万人邮局数、年末每百人固定电话数等统计数据。参考黄群慧(2019)关于互联网的工具变量;参考赵涛等做法...
标题和描述中提到的文件是关于“2000年至2019年期间中国北京市年末常住人口数量”的行业数据。这份数据集包含了北京市在二十年间的年度人口统计数据,对于研究北京市人口发展趋势、城市规划、社会经济分析以及政策...
3、整理后数据(字段为虚拟变量0- 1) 年末是否ST 年末是否PT 年末是否ST或PT 区间内是否ST: 2000 -2019区间内有一年年末是ST、*ST的取值为1 区间内是否PT: 2000- 2019区间内有一年年末是PT的取值为1 区间内是否ST...
2022-2010地级市年末常住人口(万人) 2022-2010地级市年末常住人 口(万人) 2022-2010地级市年末常住人口(万人) 2022-2010地级 市年末常住人口(万人) 2022-2010地级市年末常住人口(万人) 2022- 2010地级市年末常住人口...
2022-2011分省移动电话年末用户(万户)2022-2011分省移动电话年末 用户(万户) 2022-2011分省移动电话年末用户(万户) 2022-2011 分省移动电话年末用户(万户) 2022-2011分省移动电话年末用户(万户) 2 022-2011分省移动...
各省份2023-1990城镇基本医疗保险年末参保人数 城镇职工基本医疗保险年末参保人数 城镇在岗职工基本医疗保险年末参保人数 城镇退休人员基本医疗保险年末参保人数 城镇居民基本医疗保险年末参保人数 主要指标: 行政...
**三、年末账表打印问题** 1. **凭证打印**:不能打印凭证封面。 2. **账簿打印**:总分类账按科目分页,明细分类账打印账簿目录,多栏账需设置副页套打模板。 3. **报表打印**:需关注尺寸、页眉页脚设置,确保打印...
城镇基本医疗保险年末参保人数(万人).xls
GDP面积户籍人口数地区生产总值 数据年度:2000-2022,23...区县年末单位从业人员 城镇单位在岗职工人数 乡村从业人员数 农林牧渔业从业人员数 年末第二产业单位从业人员 年末第三产业单位从业人员 人口 GDP 面积.xlsx
根据股权质押统计表数据整理 出质方与上市公司关系只保留 有控股股东的 更新时间选择最靠近年末的数据,如果当年没有更新,与上一年的股权质押 情况一致,以此类推 字段说明 PLD_DUM:年末控股股东是否存在股权质押...
年末账表打印问题包括凭证打印、账簿打印和报表打印,需要根据具体需求进行设置。 5. **账表数据分析**:在对账过程中,关注点在于固定资产与总账的对账,应收款管理与总账的对账,以及资产负债表和利润表的平衡。...
【宏观资产负债表与流动性分析】 宏观资产负债表是分析经济中各个部门资产与负债状况的重要工具,用于理解各部门的流动性变化,以及对整体经济的影响。在本文中,华泰期货的研究团队对2021年12月22日的中国宏观经济...
"年末大促营销手册2023.pdf" 在这份年末大促营销手册中,我们可以看到,年末大促季节是一个非常重要的购物和消费季节,在全球许多市场中,圣诞节是全年最重要的购物和消费季节之一。根据Deloitte的2022 Holiday ...
0192.中国2017年按行业分组的年末城镇单位从业人员统计(十).xls