| |
|
开发:
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时,分区层打开锁住所有底层表,确定哪个分区,去底层表里写入数据。 优势: 可以扩充表的数据量。 对于访问量不大的分区,可以通过分区很容易删除数据,如果有新增加的数据,可以很容易去扩展分区。 减少访问数据时,减少一些不必要数据的索引数据检索量, 根据分区来查找数据,提高数据的查询效率, 像分组,统计这种函数,分区表可以实现多个磁盘并行的去分散查询数据,来提高数据查询的吞吐量。 减少查询是的响应时间 优势:
类型: 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; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |