- 浏览: 162490 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (133)
- 数据库 (17)
- Java基础 (18)
- Web (18)
- 工具应用 (4)
- 黑技术 (1)
- CRM (1)
- XMPP (1)
- openfire (7)
- 软件流程 (1)
- 高性能篇 (10)
- 网络通讯 (5)
- Http (1)
- 负载均衡 (4)
- linux (2)
- hadoop (3)
- 分布式 (6)
- SOA (2)
- 构建 (2)
- ant lvy (1)
- 同步异步IO/NIO (3)
- 事务相关 (7)
- mysql (6)
- 照相 (1)
- android (1)
- 高并发 (2)
- 搜索 (0)
- JVM (1)
- Spark (1)
- 架构师 (3)
- docker (3)
- 大数据 (1)
最新评论
-
yjsxxgm:
yjsxxgm 写道yjsxxgm 写道
揭秘淘宝286亿海量图片存储与处理架构 -
yjsxxgm:
yjsxxgm 写道
揭秘淘宝286亿海量图片存储与处理架构 -
yjsxxgm:
yjsxxgm 写道
揭秘淘宝286亿海量图片存储与处理架构 -
yjsxxgm:
揭秘淘宝286亿海量图片存储与处理架构 -
raodun:
哥们,nginx做websphere的会话保持何如写?
nginx的会话保持
《 http://hi.baidu.com/jackbillow/blog/item/26effe7e637ca0300ed7da66.html》
相信有很多人经常会问同样的一个问题:当 MySQL 在以前,一种解决方案就是使用 MERGE 这个时候,MySQL 5.1 中新增的分区(Partition)功能的优势也就很明显了: 分区允许可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。 在这里,将用户表分成4个分区,以每300万条记录为界限,每个分区都有自己独立的数据、索引文件的存放目录,与此同时,这些目录所在的> 分成4个区,数据文件和索引文件单独存放。 分成4个区,数据文件和索引文件单独存放。 分成4个区,数据文件和索引文件单独存放。 对 RANGE 分区再次进行子分区划分,子分区采用 HASH 类型。 或者 对 RANGE 分区再次进行子分区划分,子分区采用 KEY 类型。 删除分区 p0。 将原来的 p0,p1 分区合并起来,放到新的 p0 分区中。 将原来的 p0,p1 分区合并起来,放到新的 p0 分区中。 用 REORGANIZE 方式重建分区的数量变成2,在这里数量只能减少不能增加。想要增加可以用 ADD PARTITION 方法。 新增一个RANGE分区。 将分区总数扩展到8个。 好了,本次体验先到这里,更多详情请看 mysql 手册第18章。一、概述
的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是肯定的,但是性能下降>的比率不一而同,要看系统的架构、应用程序、还有>包括索引、服务器硬件等多种因素而定。当有网友问我这个问题的时候,我最常见的回答>就是:分表,可以根据id区间或者时间先后顺序等多
种规则来分表。分表很容易,然而由此所带来的应用程序甚至是架构方面的改动工作却不>容小觑,还包括将来的扩展性等。
类型,这是一个非常方便的做饭。架构和程序基本上不用做改动,不过,它的缺点是显见的:
二、分区的类型
分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含>整数值。
参见18.2.4节,KEY分区
三、分区例子:
CREATE TABLE users (
uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
email VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY RANGE (uid) (
PARTITION p0 VALUES LESS THAN (3000000)
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1 VALUES LESS THAN (6000000)
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx',
PARTITION p2 VALUES LESS THAN (9000000)
DATA DIRECTORY = '/data4/data'
INDEX DIRECTORY = '/data5/idx',
PARTITION p3 VALUES LESS THAN MAXVALUE DATA DIRECTORY = '/data6/data'
INDEX DIRECTORY = '/data7/idx'
);
物理磁盘分区可能也都是完全独立的,可以多大提高了磁盘IO吞吐量。CREATE TABLE category (
cid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY LIST (cid) (
PARTITION p0 VALUES IN (0,4,8,12)
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1 VALUES IN (1,5,9,13)
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx',
PARTITION p2 VALUES IN (2,6,10,14)
DATA DIRECTORY = '/data4/data'
INDEX DIRECTORY = '/data5/idx',
PARTITION p3 VALUES IN (3,7,11,15)
DATA DIRECTORY = '/data6/data'
INDEX DIRECTORY = '/data7/idx'
);
CREATE TABLE users (
uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
email VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY HASH (uid) PARTITIONS 4 (
PARTITION p0
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx',
PARTITION p2
DATA DIRECTORY = '/data4/data'
INDEX DIRECTORY = '/data5/idx',
PARTITION p3
DATA DIRECTORY = '/data6/data'
INDEX DIRECTORY = '/data7/idx'
);
REATE TABLE users (
uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
email VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY KEY (uid) PARTITIONS 4 (
PARTITION p0
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx',
PARTITION p2
DATA DIRECTORY = '/data4/data'
INDEX DIRECTORY = '/data5/idx',
PARTITION p3
DATA DIRECTORY = '/data6/data'
INDEX DIRECTORY = '/data7/idx'
);
子分区是针对 RANGE/LIST 类型的分区表中每个分区的再次分割。再次分割可以是 HASH/KEY 等类型。例如:
CREATE TABLE users (
uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
email VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY RANGE (uid) SUBPARTITION BY HASH (uid % 4) SUBPARTITIONS 2(
PARTITION p0 VALUES LESS THAN (3000000)
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1 VALUES LESS THAN (6000000)
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx'
);
CREATE TABLE users (
uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL DEFAULT '',
email VARCHAR(30) NOT NULL DEFAULT ''
)
PARTITION BY RANGE (uid) SUBPARTITION BY KEY(uid) SUBPARTITIONS 2(
PARTITION p0 VALUES LESS THAN (3000000)
DATA DIRECTORY = '/data0/data'
INDEX DIRECTORY = '/data1/idx',
PARTITION p1 VALUES LESS THAN (6000000)
DATA DIRECTORY = '/data2/data'
INDEX DIRECTORY = '/data3/idx'
);
四、分区管理
ALERT TABLE users DROP PARTITION p0;
ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES LESS THAN (6000000));
ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES IN(0,1,4,5,8,9,12,13));
ALTER TABLE users REORGANIZE PARTITION COALESCE PARTITION 2;
ALTER TABLE category ADD PARTITION (PARTITION p4 VALUES IN (16,17,18,19)
DATA DIRECTORY = '/data8/data'
INDEX DIRECTORY = '/data9/idx');
ALTER TABLE users ADD PARTITION PARTITIONS 8;
发表评论
-
如何实现XA式、非XA式Spring分布式事务
2017-03-05 10:50 1443<转自http://www.open-open.co ... -
怎么跳出MySQL的10个大坑
2017-03-05 10:51 435转 背景 关于Group Commit网上的资料其实已 ... -
MySQL的临时表和视图有什么优缺点吗
2017-03-02 14:52 730作者:知乎用户 链接:https://www.zhihu ... -
MySQL的经典用法----临时表与内存表
2017-03-02 14:36 614mysql5.5性能优化-内存表 临时表与内存表 内存表 ... -
MySQL详解--锁
2016-05-02 16:57 1234锁是计算机协调多个进程或线程并发访问某一资源的机制。在 ... -
数据库性能调优
2012-05-08 17:04 8711、1、调整数据结构 ... -
MySQL数据库框架结构---Cluster,Replication,MyISAM综合
2012-03-01 11:18 1965<转自http://blog.chinaun ... -
MySQL的表分区
2012-02-28 18:38 839<转自http://lehsyh.iteye.c ... -
mysql 存储引擎MyISAM ·InnoDB·Memory·Archive...的区别
2012-02-28 17:48 0<转自http://hi.baidu.com/s ... -
linux下mysql的卸载、安装全过程
2011-11-05 17:12 8851、查找以前是否装有mysql 可以看到mysql的两个包: ... -
sql server与excel、access数据互导
2011-10-28 17:51 796<转自http://www.duote.com/tech ... -
mysql数据库远程访问设置方法
2011-08-31 19:48 991mysql数据库远程访问设 ... -
分库分表总结
2011-07-12 14:28 1038转自http://happyenjoylife.iteye.c ... -
在MySQL中利用外键实现级联删除!
2010-07-15 14:35 782<转自>http://www.chinaunix. ... -
oracle,mysql,db2修改列比较
2010-07-10 15:54 1401(转自:http://www.54xue.com/w/18/n ... -
mac mysql error
2010-06-23 16:10 2857Mysql ERROR 1045 (28000): Acces ... -
ORACLE内部函数大全以及与SQLSERVER的区别
2009-12-09 10:31 1100字符函数 下面是Oracle支持的字符函数和它们的Micro ...
相关推荐
MYSQL 通过分区(Partition)提升MySQL性能,看清楚,不要浪费分数,是MYSQL,不是SQL SERVER2000,有需要的可以下载.
MySQL Partition Manager 是雅虎开源的 MySQL 分区管理器。它可以帮助你以最小的配置自动创建、维护、清除分区。 标签:MySQL
表分区是最近才知道的哦 ,以前自己做都是分表来实现上亿级别的数据了,下面我来给大家介绍一下mysql表分区创建与使用吧,希望对各位同学会有所帮助。表分区的测试使用,主要内容来自于其他博客文章以及mysql5.1的...
如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误: 代码如下: ERROR 1505 <HY000> Partition management on a not partitioned table is not possible 正确的方法是新建一个具有分区...
MySQL交换分区的实例详解 前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL暂时不支持垂直分区,因此接下来说的都是水平分区。水平分区即:以行为单位对表...
MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据。在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这样查询就可以无需扫描所有分区,只需要查找包含需要数据的...
MySQL分区检查前置条件-- 查看分区插件是否激活 partition -> active-- 查看分区插件是否激活方法2,plugin_status ->
mysql 分区 partition 当进行分区操作,了解对性能所产生的影响是非常有帮助的: 1.创建分区表比无分区的正规表要稍微慢些; 2.通过alter table….drop partition语句进行删除比delete语句要快些; 3.在range或list...
MySQL从5.1.3开始支持Partition。 分区和手动分表对比 手动分表 分区 多张数据表 一张数据表 重复数据的风险 没有数据重复的风险 写入多张表 写入一张表 没有统一的约束限制 强制的约束限制 MySQL支持...
MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据。在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这样查询就可以无需扫描所有分区,只需要查找包含需要数据的...
禁止构建 分区表达式不支持以下几种构建: 存储过程,存储函数,UDFS或者...在MySQL 5.7.1之前的分区表不支持HANDLER语句,以后的版本取消了这一限制。 服务器SQL模式 如果要用用户自定义分区的表的话,需要注意的是
在最近的项目中,我们需要保存大量的数据,而且这些数据是有有效期的,为了提供查询效率以及快速删除过期数据,我们选择了MySQL的分区机制。把数据按照时间进行分区。 分区类型 Range分区:最为常用,基于属于一个...
改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了。这篇文章主要介绍了Mysql分区表的管理与维护,非常不错,感兴趣的朋友一起学习吧,需要的朋友可以参考下
MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了: 与单个磁盘或文件系统分区相比,可以存储更多的数据 很容易就能删除不用或者过时的数据 一些查询可以得到极大的优化 涉及到 SUM()/...
然后,我们使用`PARTITION BY RANGE`子句对表进行分区,根据`order_date`字段的值将数据划分为四个分区:`p0`、`p1`、`p2`和`p3`。每个分区包含特定年份的数据。 - 最后,我们执行一个查询,筛选出`order_date`大于...
前言 分区是指根据一定的规则将一个...mysql5.7以后查询语句支持指定分区例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5 ”指定分区同样适用DELETE, INSERT, REPLACE, UPDATE, and LOAD DATA, LOAD XML.
主要介绍了Mysql数据表分区技术PARTITION浅析,分别介绍了 Mysql 中的分区技术 RANGE、LIST、 HASH,需要的朋友可以参考下
mysql表分区的建立,索引的建立,原理说明,还有就是实例的演示
mysql可以通过下面语句判断是否支持分区: SHOW VARIABLES LIKE ‘%partition%’; 如果输出: have_partitioning YES 表示支持分区。 或者通过: SHOW PLUGINS; 显示所有插件,如果有partition ACTIVE STORAGE ...