数据库分区

这篇具有很好参考价值的文章主要介绍了数据库分区。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.数据库分区

分区优点

1、与单个磁盘或文件系统分区相比,可以存储更多的数据。
2、通过删除与增加那些数据有关的分区,很容易地删除或增加那些数据。
3、一些查询可以得到极大的优化。
4、通过跨多个磁盘甚至服务器来分散数据查询,来获得更大询吞吐量。
5、MySQL5.5之后支持所有函数的分区优化。限定只查询有效的分区。

Range分区

基于属于一个给定连续区间的列值,把多行分配给分区。

ALTER TABLE titles
//分区语句   range
partition by range (year(from_date))// year(from_date)  分区的依据
(
    partition po1 values less than (1985), 小于不包含[-无穷,1985)
    partition po2 values less than (1986),
    partition po3 values less than (1987),
    partition p04 values less than (1988),
    partition p15 values less than (1999),
    partition p16 values less than (MAXVALUE)
);

list分区

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

create table t2 (id int,cid int,name varchar(20),pos_date datetime)
partition by list (cid)	
(
    partition po1 values in (1,2,3),
    partition p02 values in (4,5,6),
    partition po3 values in (7,8,9)
);

Hash分区

基于用户定义的表达式的返回值来进行选择的分区,基于插入的行的列信息通过表达式计算返回非负整数来确定分区

使用HASH分区的优点在于数据分布较为均匀

create table t3 (id int,cid int,name varchar(20),pos_date datetime)
partition by hash(cid)
partitions 4;

Linear Hash分区

1.缺点

数据分布不均衡(有的分区数据多,有的分区数据少)

2.优点

  • 增加、删除、合并和拆分分区快捷
  • 有利于处理大量数据表
create table t3 (id int,cid int,name varchar(20),pos_date datetime)
partition by linear hash(cid)
partitions 4;

key分区

create table t3 (id int,cid int,name varchar(20),pos_date datetime)
partition by key(cid)
partitions 4;

添加功能(mysql 5.5版本以上)

多列分区columns (string date)

create table t4(a int,b int,c int)
partition by range columns(a,b)   //插入时按从左往右进行对比
(
     partition po1 values less than (10,20),
     partition p02 values less than (10,30),
     partition po3 values less than (10,maxvalue)
 );

子分区

子分区是分区表中每个分区的再次分割。
子分区可以用于特别大的表,在多个磁盘间分配数据和索引。

CREATE TABLE t5 (id INT,udate DATE)
PARTITION BY RANGE(YEAR(udate))
SUBPARTITION BY HASH(TO_DAYS(udate))
SUBPARTITIONS 2
(
    PARTITION PO VALUES LESS THAN(1990)
    PARTITION p1 VALUES LESS THAN (2000),
    PARTITION p2 VALUES LESS THAN MAXVALUE
);

子分区将数据和索引分配到不同文件夹下,减轻单个I/O压力

CREATE TABLE t5 (id INT,udate DATE)
PARTITION BY RANGE(YEAR(udate))
SUBPARTITION BY HASH(TO_DAYS(udate))
(
     partition p0l values less than (1999)
    (
        subpartition s0
        data directory='/var/a/data'
        inde× directory="/var/a/idx',
        subpartition s1
        data directory='/var/b/data'
        index directory='/var/b/idx'
    ),
	partition p02 values less than (2000)
    (
        subpartition s2
        data directory='/var/c/data'
        index directory='/var/c/idx',
        subpartition s3
        data directory='/var/d/data'
        index directory='/var/d/idx'
    )
);

分区管理和维护

1.alter进行简单修改分区

ALTER语句简单修改了分区。效果和先删除原表再按新的分区方式重新建表效果相同。

alter table t3 partition by key() partitions 2

2.删除分区

alter table t3 drop partition  p02  //删除本分区结构和数据
alter table t3 truncate partition p01 //不删除本分区结构,只删除本分区数据

3.range添加分区

partition by range (year(from_date))// year(from_date)  分区的依据
(
    partition po1 values less than (1985), 小于不包含[-无穷,1985)
    partition po2 values less than (1986)
 )
alter table t1 add partition (partition p02 values less than("date"))
注意
	"date"填写的数据必须高于上次创建分区的最大值

4.list添加分区

partition by list (cid)	
(
    partition po1 values in (1,2,3),
    partition p02 values in (4,5,6),
    partition po3 values in (7,8,9)
);
alter table t1 add partition (partition p02 values in ("date"))
注意
"date"填写的数据不能包含原有的数据

5.分区重组

ALTER TABLE t1 REORGANIZE PARTITION pO1 INTO(
PARTITION sO VALUES LESS THAN(5)
PARTITION s1 VALUES LESS THAN(10));
注意
	1.range分区重组 只能相邻的分区 不能跳过分区重组
	2.list分区重组,重组的必须覆盖原有区间

6.hash和key分区数量

alter table t3 coalesce partition 2  //在原有的分区数量上减少2个
alter table t3 add partition partitions 2 //在原有的分区数量上增加2个

分片

  1. 垂直分片

业务维度将表拆分到不同的数据库中,专库专用,分担数据库压力。

  1. 水平分片

解决单表数据过大的问题文章来源地址https://www.toymoban.com/news/detail-710588.html

数据库索引

  • 按数据结构分类:B+tree索引 Hash索引 Full-text索引,
  • 按物理存储分类: 聚集索引、非聚集索引。
  • 按字段特性分类:主键索引(PRIMARY KEY)、唯一索引(UNIQUE)、普通索 (INDEX)、全文索引(FULLTEXT)。
  • 按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)

到了这里,关于数据库分区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PGSQL(PostgreSQL)数据库基础篇:PostgreSQL 的 主要优点 、 劣势 、体系结构 、核心功能 、安装教程。

    1.维护者是PostgreSQL Global Development Group,首次发布于1989年6月。 2.操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。 3.从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。 4.表和视图方面,PostgreSQL支持临时表,而物化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或其

    2024年04月26日
    浏览(65)
  • PostgreSQL数据库分区裁剪——constraint exclusion

    constraint exclusion约束排除有如下类型:不使用、对所有表使用、对otherrel使用。首先看一下官方解释:Controls the query planner’s use of table constraints to optimize queries. The allowed values of constraint_exclusion are on (examine constraints for all tables), off (never examine constraints), and partition (examine constr

    2024年02月08日
    浏览(35)
  • hive数据库delete删除部分数据/删除分区内的数据

    在Hive中,删除部分数据是一个常见的操作,特别是当我们需要清除不再需要的数据或者进行数据更新时。Hive提供了多种方式来删除部分数据,本文将介绍其中几种常用的方法。 最简单的方法是删除整个表,这将删除表中的所有数据。可以使用DROP TABLE语句来完成这个操作。下

    2024年02月04日
    浏览(61)
  • 【SQL Server】数据库开发指南(七)MS-SQL存储过程全面解析:种类、优点和创建方法详解

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月07日
    浏览(105)
  • 【科研入门】会议、期刊、出版社、文献数据库、引文数据库、SCI分区、影响因子等基础科研必备知识

    大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 会议论文一定是针对某个学术会议投稿,并且由学术会议的会务组决定是否

    2024年02月11日
    浏览(61)
  • GaussDB云数据库SQL应用系列—分区表管理

    目录 前言 一、分区表基本原理 二、分区表主要优势 三、分区表常见场景 四、GaussDB分区表管理(示例) 示例一:创建范围分区表(RANGE) 示例二:创建哈希分区表(HASH) 示例三:创建列表分区(LIST) 五、总结 前言 本文将介绍GaussDB云数据库的分区表技术,包括原理、优势以

    2024年02月09日
    浏览(52)
  • 初识mysql数据库之索引概念与磁盘效率问题

    目录 一、索引的概念及作用 二、实际看看索引的效率提升 三、认识磁盘 1. 简单了解磁盘 2. 数据库文件存储位置 3. 定位扇区 4. 数据读取效率问题 5. 磁盘随机访问与磁盘连续访问 5.1 随机访问 5.2 连续访问 四、mysql与磁盘的交互 五、建立共识  索引,其实就是用于 提高数据

    2024年02月16日
    浏览(56)
  • 数据库所在服务器磁盘满了怎么办?

    大家好,我是G探险者。 给大家拜个晚年哈,节后上班第一天,打开电脑,发现数据库服务器连不上了。 幸亏,节后第一天上班的人不太多,领导还没来,我一番鼓捣解决了这个问题。 所以做个总结,记录一下。 使用mysql提供的客户端工具在命令行连接mysql数据库时,报错如

    2024年02月22日
    浏览(49)
  • openGauss学习笔记-201 openGauss 数据库运维-常见故障定位案例-执行修改表分区操作时报错

    201.1 执行修改表分区操作时报错 201.1.1 问题现象 执行ALTER TABLE PARTITION时,报错如下。 201.1.2 原因分析 在同一条ALTER TABLE PARTITION语句中,既存在DROP PARTITION又存在ADD PARTITION时,无论它们在语句中的顺序是什么,openGauss总会先执行DROP PARTITION再执行ADD PARTITION。执行完DROP PARTITIO

    2024年01月19日
    浏览(50)
  • 4、hive的使用示例详解-事务表、视图、物化视图、DDL(数据库、表以及分区)管理详细操作

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包