• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL高级十五——表的分区

MySQL高级十五——表的分区

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL高级,表的分区等相关知识,希望本文的分享对您有所帮助
1、为什么要采用分区?

当数据量过大的时候(通常是指百万级或千万级数据的时候),这个时候需要将一张表的数据划分几张表存储。一些查询可以得到极大的优化,这主要是借于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。

2、查看一下mysql是否支持分区

通过以下命令去查看mysql是否支持分区??

show variables like '%partition%';


——如果输出的变量为yes表示mysql是支持分区的。

3、Range分区
CREATE TABLE employees (
  id INT NOT NULL,
  fname VARCHAR(30),
  lname VARCHAR(30),
  hired DATE NOT NULL DEFAULT '1970-01-01',
  separated DATE NOT NULL DEFAULT '9999-12-31',
  job_code INT NOT NULL,
  store_id INT NOT NULL
)

partition BY RANGE (store_id) (
	partition p0 VALUES LESS THAN (6),
	partition p1 VALUES LESS THAN (11),
	partition p2 VALUES LESS THAN (16),
	partition p3 VALUES LESS THAN (21)
);

在这个例子中, 店内工人相关的所有行将保存在分区p0中,办公室和支持人员相关的所有行保存在分区p1中,管理层相关的所有行保存在分区p2中。

查看分区

show create table employees;


4、List分区

类似于RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某一值来进行选择。

LIST分区通过使用"PARTITION BY LIST(expr)"来实现,其中"expr"是某列值或一个基于某一个列值、并返回一个整数值的表达式,然后通过"VALUES IN (value_list)"的方式来定义每个分区,其中"value_list"是一个通过逗号分隔的整数列表。

create table category_part( cid int unsigned not null auto_increment,cname varchar(64) not null,parent_id int not null,primary key (cid,parent_id))
partition by list(parent_id)(
partition p1 values in (1,2,3,6,9),
partition p2 values in (4,5,10,22,23),
partition p3 values in (7,8,11,12,13),
partition p4 values in (14,15,16,17,20),
partition p5 values in (18,19,21,24,25)
);

5、HASH分区

hash分区的目的是将数据均匀的分布到预先定义的各个分区中,保证各分区的数据数量大致一致。在RANGE和LIST分区中,必须明确指定一个给定的列值或列值集合应该保存在哪个分区中;而在HASH分区中,MYSQL自动完成这些工作,用户所要做的只是基于将要被散列的列值指定一个列值或者表达式,以及指定呗分区的表将要被分割成的分区数量。

要使用HAHS分区来分割一个表,要在CREATE TABLE语句上添加一个PARTITION BY HASH(expr)子句,其中“expr”是返回一个整数的表达式。expr可以仅仅是字段类型为整型的列名。此外,用户很可能需要在后面再添加一个PARTITITIONS num子句,其中num是非负的整数,它表示将要被分割成分区的数量。如果没有包含一个PARTITIONS子句,分区数量默认为1.

create table t_hash (
a int,
b datetime)
partition by hash (YEAR(b))
partitions 4;

LINEAR HASH分区的优点在于增加、删除、合并和拆分分区将变得更加快捷,有利于处理含有大量数据的表。缺点在于,与使用HASH分区得到的数据分布相比,各个分区间数据的分布可能不大均衡。

6、keys分区

create table orders_key
(
id int auto_increment,
customer_surname varchar(30),
store_id int,
alesperson_id int,
order_Date date,
note varcahr(500),
index_idx(id)
) engine=myisam partition by key(order_date) partitions 4;

这个分区类似于hash分区,除了MySQL服务器使用它本身的hash表达式,不像其他类型的分区,不必要求使用一个int或null的表达式。

以上就是MySQL高级十五——表的分区的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL高级十七——MySQL账号权限赋予
  • MySQL高级十六——内存优化
  • MySQL高级十五——表的分区
  • MySQL高级十四——表的优化
  • MySQL高级十三——通过索引优化SQL
  • MySQL高级十二——索引
  • MySQL高级十一——慢查询
  • MySQL高级十——事务的应用
  • MySQL高级九——MyISAM表锁(共享读锁)
  • MySQL高级八——触发器的使用

相关文章

  • 2018-12-05linux如何查看mysql是否启动?
  • 2018-12-05MySQL5.7.18在Windows下如何安装解压版的教程
  • 2018-12-05MySQL 利用binlog增量备份+还原实例
  • 2017-05-11mysql mysqldump只导出表结构或只导出数据的实现方法
  • 2018-12-05关于mysql的mycat中间件安装与使用详解
  • 2018-12-05在一台服务器上安装两个或多个mysql的实现步骤_MySQL
  • 2018-12-05通过mysql show processlist 命令检查mysql锁的方法
  • 2018-12-05详解MySQL根(Root)密码在Linux(CentOS)下如何重置(图文)
  • 2018-12-05C#编写方法实例
  • 2018-12-05MySQL Order By语法介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql 主键与索引的联系与区别
    • mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】
    • MySQL索引设计一些策略_MySQL
    • Navicat异地自动备份MySQL方法详解(图文)
    • 详细介绍关于MYSQL和ORACLE的区别
    • SQL Server 2000 清理日志精品图文教程
    • 什么是MySQL数据库?及MySQL特点
    • 关于MySQL的整型数据的内存溢出问题的应对方法
    • 一个用来统计相同姓名人数的SQl语句
    • MySql中having字句对组记录进行筛选使用说明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有