当前位置:网站首页>数据库存储---表分区
数据库存储---表分区
2022-07-07 05:48:00 【蓝天⊙白云】
随着项目的发展,数据库的单表数据也越来越多,相关操作也就越来越慢,这个时候我们要怎么才能提高我们的相关操作效率呢?很多人都听说过分库分表,但是还有一个分区的方式可能被忽略了,在数据量还未达到千万级别的时候,我们也许还能够使用分区的方式,让一个表的数据分布在不同的文件上面,当然我们要清楚我们的表数据都是按照文件的方式存放在磁盘上面的,分区和分表是不同的意思,分区是指将一个表的数据按照条件分布到不同的文件上面,未分区前都是存放在一个文件上面的,但是它还是指向的同一张表,只是把数据分散到了不同文件而已,但是分表却是将数据分散到了不同的表,结构虽然相同,但是表的名字发生了变化。分区有助于我们降低每次操作的数据,从而提高性能。
遇到这种大数据量的问题,我们可以通过以下思路进行解决:
1.分流(原则就是:尽量使每次操作的数据的基数减少 ):
1.1.用和不用、常用和不常用分开。
1.2.对数据库存放的数据:分区、分库、分表 。
1.3.对文件存放的数据:拆文件。
1.4.考虑分批处理。
2.缓存技术:读多写少用缓存。
3.数据库优化:合理设计数据库结构、合理构建索引、数据库集群 。
4.处理优化:优化Sql、考虑使用临时表、中间表。
5.合理使用NoSql:Mongodb、Redis、HBase等 。
6.分布式大数据处理方案 :Hadoop、Spark、Storm等。
这里我们主要需要了解的是表如何进行分区,分区有什么优缺点以及分区又有哪些注意事项。这里我们是以mysql进行举例。
我们首先看下分区有什么优缺点:
1.优点:
• 进行逻辑数据分割,分割数据能够有多个不同的物理文件路径
接下来我们看下的分区方式:
1.RANGE分区:给定一个连续区间的列值 。
创建方式如下:
-
CREATE
TABLE tbl_users1 (
-
uuid
INT
NOT
NULL,
-
name
VARCHAR(
20),
-
registerTime
VARCHAR(
100)
-
)
-
PARTITION
BY
RANGE (uuid) (
-
PARTITION p0
VALUES LESS THAN (
5),
-
PARTITION p1
VALUES LESS THAN (
10),
-
PARTITION p2
VALUES LESS THAN (
15),
-
PARTITION p3
VALUES LESS THAN MAXVALUE
-
);
2.LIST分区:LIST是列值匹配一个离散值集合中的某个值来进行选择。
创建方式如下:
-
CREATE
TABLE tbl_users2 (
-
uuid
INT
NOT
NULL,
-
name
VARCHAR(
20),
-
registerTime
VARCHAR(
100)
-
)
-
-
PARTITION
BY List (uuid) (
-
PARTITION p0
VALUES
in (
1,
2,
3,
5),
-
PARTITION p1
VALUES
in (
7,
9,
10),
-
PARTITION p2
VALUES
in (
11,
15)
-
);
3.HASH分区:用户定义的表达式的返回值来进行hash计算之后选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算,这个函数必须产生非负整数值。
创建方式如下:
-
CREATE
TABLE tbl_users4 (
-
uuid
INT
NOT
NULL,
-
name
VARCHAR(
20),
-
registerTime
VARCHAR(
100)
-
)
-
PARTITION
BY HASH (uuid)
/
/uuid可以添加表达式,比如
/
2,或者
mod(uuid,
2),性能低,每条数据要计算之后在hash然后再插入
-
PARTITIONS
3;
4.KEY分区:类似于按HASH分区,由MySQL服务器提供其自身的哈希函数。
创建方式如下:
-
CREATE
TABLE tbl_users5 (
-
uuid
INT
NOT
NULL,
-
name
VARCHAR(
20),
-
registerTime
VARCHAR(
100)
-
)
-
PARTITION
BY LINEAR Key (uuid)
-
PARTITIONS
3;
在后面一篇文章中我们将专门介绍分区操作,这里不再赘述。在分区的时候我们需要注意以下情况:
1.如果表中存在primary key或者unique key时,分区的列是两种中的一个组成部分
边栏推荐
- Opencv learning notes 1 -- several methods of reading images
- 接口作为参数(接口回调)
- Obsidan之数学公式的输入
- 2 - 3 arbre de recherche
- Detailed explanation of apply, also, let, run functions and principle analysis of internal source code in kotlin
- Opencv learning notes II - basic image operations
- XCiT学习笔记
- Tuowei information uses the cloud native landing practice of rainbow
- Le système mes est un choix nécessaire pour la production de l'entreprise
- go写一个在一定时间内运行的程序
猜你喜欢

GFS分布式文件系统

Using helm to install rainbow in various kubernetes
![[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?](/img/ff/81a7b2ec08a6a422a5cf578c1fed13.jpg)
[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?
![[Yu Yue education] basic reference materials of electrical and electronic technology of Nanjing Institute of information technology](/img/2a/01db1b84c26502c851786aaca56abe.jpg)
[Yu Yue education] basic reference materials of electrical and electronic technology of Nanjing Institute of information technology

Xcit learning notes

Opencv learning note 3 - image smoothing / denoising

Download and install orcale database11.2.0.4

Rsync remote synchronization

Input of mathematical formula of obsidan

Obsidan之数学公式的输入
随机推荐
[hard core science popularization] working principle of dynamic loop monitoring system
Analysis of maker education in innovative education system
如何在快应用中实现滑动操作组件
数据中台落地实施之法
Snyk 依赖性安全漏洞扫描工具
go写一个在一定时间内运行的程序
DeiT学习笔记
Golang 编译约束/条件编译 ( // +build <tags> )
Go语言中,函数是一种类型
使用AGC重签名服务前后渠道号信息异常分析
Function extension, attribute extension and non empty type extension in kotlin
Open3d ISS key points
Data type - integer (C language)
All about PDF crack, a complete solution to meet all your PDF needs
Pvtv2--pyramid vision transformer V2 learning notes
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
[kuangbin]专题十五 数位DP
Learn how to compile basic components of rainbow from the source code
Deit learning notes
SSM integration