mysql百万数据分区_mysql百万数据实践-分区
今天实践下mysql百万级数据分区的影响,首先是产生百万级别的数据量
//创建带分区的数据表
CREATE TABLE `part_person` (
`id` bigint(20) unsigned NOT NULL,
`username` varchar(100) NOT NULL,
`born` date NOT NULL DEFAULT '1970-01-01',
`sex` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`,`born`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
PARTITION BY RANGE (year(born))
(PARTITION p0 VALUES LESS THAN (1980) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (1990) ENGINE = MyISAM,
PARTITION p2 VALUES LESS THAN (2000) ENGINE = MyISAM,
PARTITION p3 VALUES LESS THAN (2010) ENGINE = MyISAM,
PARTITION p4 VALUES LESS THAN (2020) ENGINE = MyISAM,
PARTITION p5 VALUES LESS THAN MAXVALUE ENGINE = MyISAM);
//创建不带分区的数据表
CREATE TABLE `no_part_person` (
`id` bigint(20) unsigned NOT NULL,
`username` varchar(100) NOT NULL,
`born` date NOT NULL DEFAULT '1970-01-01',
`sex` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`,`born`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
//填充数据,创建procedure向数据表插入数据
CREATE PROCEDURE `part_generate`(IN num INT)
BEGIN
DECLARE char_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE username VARCHAR(25) DEFAULT '';
DECLARE id int UNSIGNED;
DECLARE len int;
set id=1;
DELETE from person;
WHILE id <= num DO
set len = FLOOR(1 + RAND()*25);
set username = '';
WHILE len > 0 DO
SET username = CONCAT(username,substring(char_str,FLOOR(1 + RAND()*62),1));
SET len = len - 1;
END WHILE;
INSERT into part_person VALUES (id,username, ADDDATE('1970-01-01',INTERVAL RAND()*365*60 DAY), FLOOR(RAND()*2));
set id = id + 1;
END WHILE;
END
//执行procedure插入600万数据
call part_generate(6000000)
//向未分区表插入数据
insert into no_part_person select * from part_person;
现在有了数据,对比一下有没有分区对查询的影响
查询不是按照该列分区的数据时分区反而更慢一些,查询born数据时不跨区时分区效果提升显著,当数据跨区时提升效果没那么显著,但也有提升。
mysql百万数据分区_mysql百万数据实践-分区相关推荐
- MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗
当然支持100万并发. 首先,我们必须做出决定,把阅读和写作分开. 然后,它取决于你需要分配多少个单元用于写作和阅读. 我的SQL集群不建议您使用它,因为有太多的错误. 所有这些都需要先进行压力测试. ...
- mysql 查询数据 程序_MySQL 查询数据
MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MyS ...
- mysql单表数据列_MySQL 之 数据操作及单表查询
1.数据操作 (1)insert 增加数据 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: ...
- mysql insert id菜鸟_MySQL 插入数据
MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向 ...
- db2有主键时默认hash分区_MySQL分区表最佳实践
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
- mysql 分表和分区_Mysql分表和分区的区别
一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘 ...
- mysql百万数据写入_mysql 百万级数据查找,并写入txt文件
public class ConnectMysql { public List getTag(int start,int end){ List intList=new ArrayList(); Con ...
- mysql 百万数据关联_mysql百万数据关联查询优化
前段时间写过一篇MySQL Join的底层实现原理,里面稍微有提到怎么通过索引优化,即Index Nested-Loop Join,今天在获取数据时,正好做到了优化一下. 表1(T1): T1 cou ...
- mysql创建表参数_MySQL创建数据表(CREATE TABLE语句)
在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...
最新文章
- LDAP 轻量级目录访问协议 介绍
- NullPointerException
- Java多线程之死锁编码及定位分析
- 黑盒测试法——等价类划分法(修改版)
- jeecg框架alert消息样式
- python如何在没有环境的电脑上执行_没安装python的电脑可以运行python写的程序吗 python语言编写的程...
- 从苹果 M1 看芯片技术发展趋势
- PAT 数字分类(20)
- 计算机的选材标准,GBT26642-2011无损检测金属材料计算机射线照相检测方法国家标准.pdf...
- 【C语言】案例四十九 学生档案管理系统
- 微信公众号如何运营和管理?
- 使用计算机的什么来储存数据,电脑数据存贮器
- 函数计算机使用说明,SHARP-EL506P 函数计算器的使用说明
- 串口数据交换,实现串口合二为一
- FLD5302升压8.4V充电IC芯片和FLD5303升压12.6V充电IC芯片规格书datasheet
- 三角函数之角度与弧度
- u盘打不开提示格式化?里面的数据怎么办?
- MyBatis 如果不存在则插入
- Microsoft Visual Studio 的下载与安装
- absolutelayout 屏幕外 android,android基础之AbsoluteLayout布局