mysql的分区技术

mysql是否支持partition呢,在mysql下执行show plugins;(显示插件)

其中包含了partition字段就说明你的数据库支持分区技术

1,创建带有分区的表


表明创建了带有hash分区技术的表,t2表有5个分区


mysql支持的几种分区技术,最常用的是range和list二种,Hash主要用来测试


看到test中有12张t2表,每个分区表都有表索引,检索数据更快。


把t2表创建索引

create index in_id on t2(id);


2、现在我们插入一个一千万行的数据来测试

使用insert into t2 select * from t2;命令循环多次,即可得到一个千万条记录的数据

3、我们创建一个存储过程,来向一个表中插入1000万行数据

然后我们测试了分区表和未分区表在插入1000万行数据时,所用的时间

结果测试 分区表插入1000万行数据所用的时间如下:


未分区表插入1000万行数据所用的时间如下:


结果显示,未分区表插入数据要快很多

4、测试查询速度


分区表查询影响的行数如下:


未分区表查询影响的行数是全部800万行



可以看出分区表比不分区表查询速度要快很多

5、测试二者都加上索引后的查询速度


都创建索引后查询时间接近



6、分析一下mySQL二种常见的表存储引擎myisam和innodb

myisam表一般都有3个文件组成:表结构,表数据,表索引

innodb表一般有2个文件组成:表结构,表数据和索引

还有一点,就是innodb表有二种存储结构:共享表空间和独占表空间

所谓的共享表空间是指数据库的所有表数据,索引文件全部放在一个文件中(ibdata1),初始化为10M

独占表空间:每一个表都会将以独立的文件方式进行存储,每个表有2个文件:表结构和ibd文件(数据和索引),我们要实现表分区,必须设置成独立表空间

设置方法是:修改mysql配置文件vim /etc/my.cnf  添加 innodb_file_per_table=1


创建2个不同引擎的表


查看表的文件结构


innodb表结构(独占表空间)创建表分区



本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

0722 sql 语句那些事 - 2016-07-25 14:07:43

     刚接触这个项目的时候,还记得同事拿着一堆sql拼接和嵌套的代码,来问我们。当时感觉真的好麻烦,好复杂。以前用的sql都是简单的增删该查,后来ITOO中也是封装好的,所以就懒了。但是现在又遇到这个问题啦,这几天我负责的是手机端的考勤统计部分,所以用到了大量的纯sql查询语句。又将以前的知识好好学习了一下,总结一下。      这是用slqsever建立的两张表,下面几个例子都将以A、B两表为基础,介绍几种常用的连接。     一、左连接 span select * from A left join

主流NoSQL技术详解与比较 - 2016-07-24 19:07:00

主流NoSQL分类 1键值(Key-Value)存储数据库 键值对NoSQL是比较流行的一种NoSQL的解决方案,特点就是采用键值对来存储数据,它的优势在于容易部署和简单性,但是如果查询的部分只是整个数据库的小部分,那性能并不是特别突出。 2列存储数据库 列存储NoSQL比较适合的场景是处理海量的分布式存储的数据,它的主键可能是指向多个列的,数据量增加的时候几乎不影响性能。 3文档型数据库 文档数据库是采用类似键值对的方式进行存储,更准确的说是采用的JSON的格式进行存储,可以嵌套键值对,文档数据库比键值

Spark简要学习 - 2016-07-24 19:07:20

什么是Spark? 在Apache的网站上,有非常简单的一句话,'Spark is a fast and general engine',就是说Spark是一个统一的计算引擎,而且突出fast。那么具体是做什么的?是做large-scale的processing,即大数据处理。 Spark is a fast and general engine for large-scale processing. 这句话非常简单,但是它突出了Spark的一些特点:第一个特点就是Spark是一个并行式的、内存的、计算密

CentOS上面安装Oracle 11GR2 - 2016-07-24 17:07:10

正常图形化界面安装 安装X Window yum groupinstall "X Window System" yum install unzip .x 86_64 vim java- 1.8 .0 -openjdk .x 86_64 java- 1.8 .0 -openjdk-devel .x 86_64 安装依赖软件包 yum install binutils compat -libstdc ++- 33 elfutils -libelf elfutils -libelf -devel gcc gcc

pl/sql知识点总结 - 2016-07-24 14:07:00

概念 pl/sql(procedural language/sql)是oracle专有的在sql上扩展的一门语言,不仅可以写sql语言,还可以定义变量和常量。 pl/sql编写的存储过程,函数等可以提高效率,省去了传统程序与数据库交互时的编译时间。(例如:传统java程序在访问数据库带着sql语句访问,sql语句需要编译后才能被数据库识别) 编写 存储过程 SQL create or replace procedure sp_pro1 is 2 begin 3 insert into test value
实际项目实践过程中,经常会遇到一些形如“ORA-XXXX”的Oracle错误提示,此时,我们便会打开百度、Google,搜索相关技术解决方案。本系列博文的目的就在于,对常见的Oracle错误提示进行总结,不断完善。 ORA-12560 ORA-12560: TNS: protocol adapter error(SQLPLUS) ORA-27101: shared memory realm does not exist(PL/SQL Developer) (1)原因分析 在path环境变量中Oracle_
调试经验: 1. 编译包时,如果出现编译错误(PL/SQL developer中包名出现红叉),可通过以下语句查看: SELECT   name,line, POSITION, text     FROM user_errors    WHERE NAME = 'INITTEST' ORDER BY SEQUENCE; 2. 上述语句中,引号中的包名(如,INITTEST)一定要大写,否则查不到 另外,PL/SQL中的包分为包规范(包的定义)和包体(包的实现)两部分,是PL/SQL编程的基本单元。 虽然名

DB2数据库的学习及总结 - 2016-07-23 19:07:12

                                                                                                                                                   db2命令 给db2用赋权的命令 db2 grant dbadm on database to user dsp #导出数据库结构会生成一个faldb20160224.sql文件  db2look -d udep -
对于PL/SQL这种基本上面向过程的语言来讲,子程序(过程和函数)就是其核心所在了。 整个解决方案可通过组织、调用由过程和函数构成的模块来实现。 在“Divide and conquer”(分而治之)的编程世界中,子程序就是程序员手中的兵器,用的越熟练越好。 --代码 13.1 创建过程示例CREATE OR REPLACE PROCEDURE newdept ( p_deptno dept.deptno%TYPE, --部门编号 p_dname dept.dname%TYPE, --部门名称 p_loc
调试nocopy功能时,为了看到实际效果,设置了一个比较大的循环次数,结果悲剧了: 运行了近1个小时没出结果,电脑死机(任务管理器都打不开);无奈只能强行关机,开机时间又特别长,一度让我以为系统崩溃。 看来,PL/SQL developer下调试这种暴力计算的程序风险很高啊,我在Eclipse下调试Java程序时从来没碰到过这种造成电脑死机的情况。 不过,这章的内容实用性很强,死机也值了(有点心疼电脑了 ) -代码13.11 使用%Type定义形式参数CREATE OR REPLACE PROCEDURE