IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql--分区(partition ) -> 正文阅读

[大数据]mysql--分区(partition )

一张表分成若干个小表。

原理:

由多个表底层组成,每个底层表都是一个句柄对象表示(指针),

建立存储引擎实际上就是在每个底层表都建立相同的存储索引,通过分区关键字直接访问底层表,

操作select时,分区层打开锁住所有底层表,sql优化器开始过滤部分分区,通过存储引擎再打开查问分区表的数据。

操作update时,分区层打开锁住所有底层表,确定数据在哪个分区,取出数据更新,先不对分区表的数据做存储,先把之前的数据删除,再重新把新改的数据写入分区表。

操作delete时,分区层打开锁住所有底层表,确定哪个分区,去底层表里删除数据。

操作insert时,分区层打开锁住所有底层表,确定哪个分区,去底层表里写入数据。

优势:

可以扩充表的数据量。

对于访问量不大的分区,可以通过分区很容易删除数据,如果有新增加的数据,可以很容易去扩展分区。

减少访问数据时,减少一些不必要数据的索引数据检索量,

根据分区来查找数据,提高数据的查询效率,

像分组,统计这种函数,分区表可以实现多个磁盘并行的去分散查询数据,来提高数据查询的吞吐量。

减少查询是的响应时间

优势:

  • 一个表最多只能有1024个分区(mysql5.6之后支持8192个分区)。
  • 在mysql5.1中分区表达式必须是整数,或者是返回整数的表达式,在5.5之后,某些场景可以直接使用字符串列和日期类型列来进行分区(使用varchar字符串类型列时,一般还是字符串的日期作为分区)。
  • 如果分区字段中有主键或者唯一索引列,那么所有主键列和唯一索引列都必须包含进来,如果表中有主键或唯一索引,那么分区键必须是主键或唯一索引。
  • 分区表中无法使用外键约束。
  • mysql数据库支持的分区类型为水平分区,并不支持垂直分区,因此,mysql数据库的分区中索引是局部分区索引,一个分区中既存放了数据又存放了索引,而全局分区是指的数据库放在各个分区中,但是所有的数据的索引放在另外一个对象中
  • 目前mysql不支持空间类型和临时表类型进行分区。不支持全文索引。

类型:

1、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), partition p3 values less than maxvalue );

2、LIST分区

散列值,不如,1、3、5放到a分区,2、4、6、7放到b分区。

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 list(store_id) partition pNorth values in (3,5,6,9,17), partition pEast values in (1,2,10,11,19,20), partition pWest values in (4,12,13,14,18), partition pCentral values in (7,8,15,16) );

3、HASH分区:

定义的表达式来选择分区,根据选择分区用的列值来计算表达式。

种类:;linear hash

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 hash(store_id) partitions 4;

4、KEY分区:

类似HASH,支持多列,mysql提高自身的哈希算法,必须包含整数值。

create table tk ( col1 int not null, col2 char(5), col3 date ) partition by linear key (col1) partitions 3;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:35:41  更:2022-09-21 00:38:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:04:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码