MySQL分区简介

MySQL标准并没有提供太多关于数据存储在物理方面的方式。SQL语言本身旨在独立于任何的数据结构或它工作的模态媒体,表,行或列。尽管如此,大多数先进的数据库管理系统已经有方法让特定的数据存储在文件系统或硬件中的某个物理位置。在MySQL中,InnoDB存储引擎长期支持表空间的概念。MySQL服务器也在很早就有分区的概念,能够让不同的物理目录存储不同的数据库。

分区在这个概念上更近了一步,使你能够根据需要在很大程度上跨文件系统将表分成不同的区。这样,一个表的不同部分存储在不同位置的不同表。用户分割数据的规则称为分区函数,它在MySQL中可以是可以是模量,根据一组范围或值列表,内部散列函数,或一个线性散列函数进行简单的匹配。该函数根据用户指定的分区类型来选择,并将其作为参数值提供给用户表达式,该表达式可以是列值,作用于一个或多个列的值得函数,或一组一个或更多个列中的值,这取决于所有的分区的类型。

对 RANGE, LIST 和 [LINEAR] HASH分区来说,分区列的值传递给分区函数,返回一个整型值表示特定记录存储的分区号。此功能必须是非常数及非随机的。它可能不包含任何查询,但也可能使用MySQL中一个有效的SQL表达式,只要表达式返回NULL或整型值 即可。

对于 [LINEAR] KEY,RANGE,COLUMNS和LIST COLUMNS分区来说,分区表示由一列或多列组成。

对于[LINEAR] KEY分区,MySQL支持分区函数。

时间: 2024-08-08 11:41:14

MySQL分区简介的相关文章

Mysql 分区 分表相关总结之方案选择

[TOC] 引述 前段时间项目需要,一直在研究mysql sharding,看了一些这方面的资料,也亲自实验测试了一些数据.在此,做个概括的笔记,方便以后回顾知识,其实大多是借鉴网络上各位前辈的,然后抱着学习态度去实践,积累属于自己的东西. 拆分策略选择 其实拆分很灵活,有的是垂直切分,将一个库拆成两个或多个,将有相关联的表放在一个库里.有的是水平切分将数据量大的表按照一定逻辑进行拆分.个人感觉垂直切分的相对来说缓解了IO的瓶颈,而水平切分,目的是减轻了单个表或某些表读写的压力. 我们项目根据个

MySQL培训简介

MySQL培训简介一.课程简介与目标通过本次培训,可以系统的掌握MySQL的重要知识点,通过专家点拨和经验/案例分享,快速提高实战水平.每个专题结束后,会有相应的实验进行实践.二.讲师:目前为某集团公司业务运维/DBA架构师以及负责其他几家公司技术顾问:为几十家企业做过数据库培训:吉林大学计算机系毕业后加入某外企,某互联网金融等,从事Oracle.MongoDB.MySQL.Hadoop.Redis等咨询.支持和培训工作,为大量金融.移动.互联网.保险等客户提供支持和服务,擅长数据库管理.问题诊

MySQL的简介及发展历

MySQL的简介MySQL 是一个关系型数据库t管理系统,由瑞典MySQL AB公司开发 MySQL是一种开放源代码的关系型数据库管理系统,因为是开放源代码的,在下载后可以根据自己的需要进行修改. 由于体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本需选择了MySQL作为网站数据库. 最开始由SUN公司收购,后面被甲骨文Oracle公司收购 SQL ,NoSQL(Not Only SQL),NewSQL(SQL+NoSQL) 目前全世界市场有比例最高

硬盘MBR,GPT分区简介

硬盘分区简介 硬盘相关知识 硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的).每个盘片的划分规则通常是一样的.这样每个盘片的半径均为固定值R的同心圆在逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0.1.2--每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则

十四、mysql 分区之 HASH && KEY

1.hash分区 PS::个人觉得HASH分区很好很强大,简单确分布极其均匀 创建实例: CREATE TABLE HASH_EMP ( tid int, tname char(255) ) PARTITION BY HASH (tid) PARTITIONS 8; 将hash_emp进行的tid进行hash分区,并分为8个区 查询分区的数据分布情况: select partition_name,partition_expression,partition_description,table_r

mysql分区及分表(二)

mysql分区分表(二) 测试未分区表和分区表性能 重新创建新的测试数据库及未分区表back1 创建分区表back2,按照年月区分 maxvalue把对于2005的值全放在p11区里 创建大点的数据(方便测试的时候区分明显分区和未分区的区别) rand()函数在0和1之间产生一个随机数,如果一个整数参数N指定,它被用作种子值..每个种子产生的随机数序列是不同的 执行存储过程load_part_tab向back2中插入数据 向back1中插入数据 测试未分区和分区的性能 可以通过explain语句

mysql分区技术

mysql分区技术在物理存储上使数据表进行分离,逻辑上还是一张表 mysql5.1以上版本有5种分区类型 RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区. LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择. HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算.这个函数可以包含MySQL 中有效的.产生非负整数值的任何表达式. KEY 分区:类似于按HASH分区

MySQL 分区知识点(三)

前言: MySQL 分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表, 从 information_schema.INNODB_SYS_TABLES 系统表可以看到每个分区都存在独立的 TABLE_ID: 由于 Innodb 数据和索引都是保存在 ".ibd" 文件当中(从INNODB_SYS_INDEXES 系统表中也可以得到每个索引都是对应各自的分区( primary key 和 unique 也不例外)), 所以分区表的索引也是随着各个分区单独存储.

十三、mysql 分区之 RANGE && LIST

1.RANGE 分区 创建实例: CREATE TABLE EMP ( id int not null primary key auto_increment, name char(25) not null default '' ) PARTITION BY RANGE (id) ( 将字段id定义为分区的字段 PARTITION P0 VALUES LESS THAN (100), 99以下的id都归到p0分区 PARTITION P1 VALUES LESS THAN (200), 100-1