今天实践下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百万数据实践-分区相关推荐

  1. MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗

    当然支持100万并发. 首先,我们必须做出决定,把阅读和写作分开. 然后,它取决于你需要分配多少个单元用于写作和阅读. 我的SQL集群不建议您使用它,因为有太多的错误. 所有这些都需要先进行压力测试. ...

  2. mysql 查询数据 程序_MySQL 查询数据

    MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MyS ...

  3. mysql单表数据列_MySQL 之 数据操作及单表查询

    1.数据操作 (1)insert 增加数据 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: ...

  4. mysql insert id菜鸟_MySQL 插入数据

    MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向 ...

  5. db2有主键时默认hash分区_MySQL分区表最佳实践

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...

  6. mysql 分表和分区_Mysql分表和分区的区别

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘 ...

  7. mysql百万数据写入_mysql 百万级数据查找,并写入txt文件

    public class ConnectMysql { public List getTag(int start,int end){ List intList=new ArrayList(); Con ...

  8. mysql 百万数据关联_mysql百万数据关联查询优化

    前段时间写过一篇MySQL Join的底层实现原理,里面稍微有提到怎么通过索引优化,即Index Nested-Loop Join,今天在获取数据时,正好做到了优化一下. 表1(T1): T1 cou ...

  9. mysql创建表参数_MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

最新文章

  1. LDAP 轻量级目录访问协议 介绍
  2. NullPointerException
  3. Java多线程之死锁编码及定位分析
  4. 黑盒测试法——等价类划分法(修改版)
  5. jeecg框架alert消息样式
  6. python如何在没有环境的电脑上执行_没安装python的电脑可以运行python写的程序吗 python语言编写的程...
  7. 从苹果 M1 看芯片技术发展趋势
  8. PAT 数字分类(20)
  9. 计算机的选材标准,GBT26642-2011无损检测金属材料计算机射线照相检测方法国家标准.pdf...
  10. 【C语言】案例四十九 学生档案管理系统
  11. 微信公众号如何运营和管理?
  12. 使用计算机的什么来储存数据,电脑数据存贮器
  13. 函数计算机使用说明,SHARP-EL506P 函数计算器的使用说明
  14. 串口数据交换,实现串口合二为一
  15. FLD5302升压8.4V充电IC芯片和FLD5303升压12.6V充电IC芯片规格书datasheet
  16. 三角函数之角度与弧度
  17. u盘打不开提示格式化?里面的数据怎么办?
  18. MyBatis 如果不存在则插入
  19. Microsoft Visual Studio 的下载与安装
  20. absolutelayout 屏幕外 android,android基础之AbsoluteLayout布局

热门文章

  1. 月活被饿了么反超,美团外卖怎么了?
  2. 曝国安苏宁争夺威尔士当红前锋 开价500万镑年薪
  3. win11电脑亮度调节失效解决经验分享
  4. 福禄克MPO预端接光纤光缆测试解决方案
  5. pythonturtle写字_对于Python turtle的学习笔记
  6. comodo多域名证书是什么样的证书
  7. Git版本管理软件使用
  8. web sql database数据存储位置
  9. JavaSE笔记 30天学Java打卡 Day06
  10. SQL注入攻击是什么?如何有效应对?