我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用数据库分区的原因及好处是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用数据库分区的原因及好处是什么

这篇文章主要介绍“使用数据库分区的原因及好处是什么”,在日常操作中,相信很多人在使用数据库分区的原因及好处是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用数据库分区的原因及好处是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是数据库分区?

分区是将表和索引分成较小的部分,甚至将其细分为较小的部分。可以将它想象成在一个大仓库(一张大桌子)中存放着数百万本不同主题和年份(例如2000–2019年)的不同杂志。分区意味着您将把它们组织在那个大仓库内的不同房间中。它们仍然属于一个仓库,但是现在您根据数据库分区策略在逻辑级别上对它们进行分组。

使用数据库分区有什么好处?

一个好的分区策略是可行的,原因有很多,例如更好的性能,更好的可管理性,更高的可用性或负载平衡。

(1) 更好的性能

如果以上面的杂志仓库为例,您正在寻找2009年10月发行的“体育画报”,并且在发行年份对仓库进行了分区,则只需查看房间或找到您想要的2009年分区。现在,想象一下,在仓库的一个“  2009”房间内,您放了几个大盒子,然后按照主题或出版物将杂志放在这些盒子里(“体育画报”,“专业摄影师”,“钓鱼”英雄”,…)。这将创建一个子分区,这将使查找所需的杂志变得更加容易,因为您将不再需要浏览所有《  2009年》杂志,但是您可以直接进入2009年会议室,然后直接转到“  “体育画报”框。这就是性能的划分。现在,如果您将不同的杂志放在柜子里,而杂志的所有背面(标题和月份/年份)都在外面,那将与添加索引相同。这样一来,您就可以快速找到正确的杂志并挑选出来,而不必挑选每本杂志并阅读整本杂志,直到找到所需的杂志为止。而且,如果您需要来自两个或多个不同分区(房间,盒子)的数据(杂志),则可以让两个或多个进程(人员)在寻找它,同时您仍可以确保他们不会两次查看同一部分。

(2) 更好的可管理性和负载平衡

您可以将不同的逻辑分区存储在不同的物理磁盘上,甚至在某些情况下甚至可以存储在服务器上。这样,在一个分区/磁盘/服务器上工作并不一定意味着其他分区必须脱机。维护也是如此,如果仅保留最近10年的数据,并且按年范围对表进行分区,则可以轻松地删除(或备份和删除)最早的分区。回到仓库比较,如果您每年将仓库划分为多个房间,并且在2011年房间中完成工作,那么其他所有房间仍然可以使用。如果要删除2000年的所有杂志,则只需从一个房间中取出所有东西,而不必每年浏览每本杂志。

(3) 更高的可用性

由于故障或其他原因造成的停机时间不一定会对其他分区产生影响。备份和恢复也是如此,您可以对每个分区进行独立于其他分区的操作,从而减少了停机时间。

什么时候应该对我的表进行分区?

分区策略中需要考虑以下几件事:

  • 大表始终是一个很好的分区候选对象,超过2Gb的一切都是一个开始。

  • 如果您的表中包含历史数据,并且数据将按时间顺序添加。例如,如果您按月或天为基础按批次加载数据,则更是如此。在这种类型的分区中,一个分区只能保留最新的分区可更新,而其他分区(旧)则是只读的。

  • 如果您需要在不同类型的存储(在某些情况下甚至是服务器)之间分配表。例如,大多数查询都在最近三年的分区上运行,但是您需要在表中保留10年的数据。最古老的7年很少被查询。这样,您可以将最新的三个分区放置在高性能SSD驱动器上,而将最旧的7个分区放置在较旧和较便宜但速度较慢的HD驱动器上。

为什么不使用索引而是分区?

好吧,索引很好。他们甚至很棒!在您的数据库性能工具箱中,它们绝对是必不可少的工具。但是索引非常擅长检索一小部分数据,尤其是散布在整个表中的数据。如果索引可以为您提供超过20%的数据,则可以认为它们最终表现最佳,而真正的转折点大概是数据的1%-5%。但是,当然,这很大程度上取决于许多不同的因素,例如服务器,设置,数据,天气(不,不是天气!),……最重要的是:不要考虑分区或索引。

在一个好的分区策略中,仍然有很多空间和机会可以很好地使用索引。例如,我上面的杂志仓库示例,在仓库内部每年进行分区,在房间内部按出版物进行分区。通过使标题/月份在橱柜而不是框内(这将创建索引)更加可见,从而留下了更多提高性能的机会。

我可以基于什么数据库分区策略?

您在分区表中输入的每一行都应明确属于一个特定分区。分区键定义行将存储在哪个分区中。这个分区键可以是一个字段,也可以包含多个字段的组合,只要它是模棱两可的,那么就很独特。回到杂志的例子,您可以使用“出版年份”作为分区键,但是您不能将“包含汽车品牌的图片”用作每个品牌的分区键和分区,因为这意味着最新的“  Top Gear Magazine”需要同时位于“ Ferrari”和“ Aston Martin”分区中,并且还有更多。

有哪些不同类型的分区?

  • 范围分区

  • 列表分区

  • 哈希分区

  • 子分区

(1) 范围分区

按值范围进行分区。这意味着,如果分区键的值在该分区范围内,则对表进行分区,以使行属于特定分区。例如,杂志:我们每年将仓库分成多个房间。这意味着我们有范围分区,其中每个分区的范围从01–01-YYYY到31–12-YYYY。因此,如果我有一本杂志的发布日期为2015年5月,则它将进入2015年5月1日至2015年1月31日至2015年12月31日的范围分区。

间隔分区是范围分区的一种特殊类型,其中间隔分区中的范围始终基于时间,并且在将新数据添加到表中应属于新间隔范围的新数据时自动创建。

(2) 列表分区

通过列表对数据库进行分区,可以通过在表和每个分区的定义中定义分区键来显式控制和定义哪个值进入哪个分区:

SQL> Create table magazines (Pub_Title varchar(150), Pub_Date (date)) partition by list(Pub_Title) (partition Pub_Title1 values(“Sports Illustrated”, “Mens Health”), partition Pub_Title2 values(“Vanity”, “Flair”), partition Pub_Title3 values(“Yoga Magazine”, “Zen Magazine”));

或者,以杂志为例,您可能已经可以从SQL中读取信息:我们将仓库按每个出版物标题划分为多个房间,但是对于每个不同的出版物标题,我们没有足够的房间,因此我们“列出”了每个房间几个。在第一会议室中,我们放置“体育画报”和“精神健康”;在第二会议室中,我们放置“虚荣”和“天才”;在第三会议室中,我们放置“瑜伽杂志”和“禅宗杂志”。有道理吧?

(3) 哈希分区

在哈希分区中,数据行根据分区键的哈希值映射到分区。如果要在没有明确业务或数据逻辑分区的表上使用分区,并且需要均匀分布的分区,则此功能很有用。例如,您有一个装满杂志的整个仓库,但出版物标题和出版日期是随机的。没有完整的年份,依此类推。但是,您希望将它们平均分配到仓库的十个不同房间中,以便以后需要取回一本(或多本)杂志时,可以同时派出十个人去寻找它们。十个不同的房间。比散列分区派上用场。例如,您选择出版物标题和出版物日期的组合作为分区键,然后让数据库对该键进行哈希处理,然后选择适当的分区,同时将所有杂志平均分配到所有房间。

(4) 子分区

子分区(也称为复合分区)是在分区内部创建分区。它是已经分区表的每个分区的进一步划分。让我们回到杂志仓库。我们首先每年将整套杂志放在不同的房间里。这是基于范围分区的第一个分区。接下来,在每个这些年级房间中,放入盒子,然后在每个盒子中放入所有具有相同出版物名称的杂志。由于在那个房间里,我们只已经有一个特定年份的出版物,所以在那个盒子里,我们只会有一个特定出版物名称和一个特定出版年份的杂志。因此,这非常容易且快速地找到“  Yoga Magazine”,“ 2017年11月版”。或者,在代码中:

SQL> Create table magazines (Pub_Title(varchar(150)), Pub_Date(date) Partition by rage (Pub_Year(Pub_Date)) Subpartition by list(Pub_Title) ( partition Pub_Title1 values(“Sports Illustrated”, “Mens Health”), partition Pub_Title2 values(“Vanity”, “Flair”), partition Pub_Title3 values(“Yoga Magazine”, “Zen Magazine”) );

如您所见,分区是除数据库工具箱中许多其他工具之外的有价值的工具,对于提高数据库性能,可用性和可维护性非常有用。选择哪种分区策略当然取决于您的数据,但也取决于您将要实现的特定数据库系统的技术可能性。

到此,关于“使用数据库分区的原因及好处是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用数据库分区的原因及好处是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP数据库接口的作用及原因分析

标题:PHP数据库接口的作用及原因分析在Web开发领域中,数据库是至关重要的一部分,而PHP作为一种被广泛应用于服务器端开发的语言,与数据库之间的交互也显得尤为重要。为了方便PHP与各种数据库交互,我们常常使用数据库接口,例如MySQLi
PHP数据库接口的作用及原因分析
2024-03-12

PHP更新数据库失败的原因是什么及怎么解决

这篇“PHP更新数据库失败的原因是什么及怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP更新数据库失败的原因是什
2023-07-06

服务器数据库损坏的原因是什么

服务器数据库损坏的原因:1、事务日志文件丢失、损坏、被误删除或文件过大,导致硬盘的空间不足,数据库损坏;2、意外掉电或异常强制关机,导致数据库文件损坏;3、数据库表、索引、其他对象被破坏或丢失等,导致数据库损坏;4、删除或更改了数据文件,导
2023-02-13

SQL数据库连接不上的原因及解决方法是什么

SQL数据库连接不上的原因及解决方法可能有以下几种:1. 数据库服务未启动或停止:查看数据库服务是否已启动,如果未启动,需要启动数据库服务。2. 数据库连接配置错误:检查数据库连接的配置信息,确保用户名、密码、主机地址、端口等配置项正确。3
2023-09-22

sql数据库启动不了的原因及解决方法是什么

SQL数据库启动不了的原因及解决方法可能有很多,以下是一些常见的原因及解决方法:1. 数据库服务未启动:检查数据库服务是否已启动,可以在命令行中输入"services.msc"查看并启动数据库服务。2. 数据库配置错误:检查数据库配置文件是
2023-09-04

php总是连接数据库不成功的原因是什么及怎么解决

这篇文章主要介绍“php总是连接数据库不成功的原因是什么及怎么解决”,在日常操作中,相信很多人在php总是连接数据库不成功的原因是什么及怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php总是连接数据
2023-07-05

Oracle数据库中的分区表是什么

在Oracle数据库中,分区表是通过将大表拆分为更小、更易管理的部分来提高性能和管理效率的技术。分区表将数据逻辑上分割成多个独立的部分,每个部分称为一个分区。这些分区可以根据特定的规则和条件进行定义,例如基于范围、列表、哈希等方式。使用分
Oracle数据库中的分区表是什么
2024-04-09

MySQL数据丢失的原因是什么及怎么解决

这篇文章主要介绍了MySQL数据丢失的原因是什么及怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL数据丢失的原因是什么及怎么解决文章都会有所收获,下面我们一起来看看吧。
2023-04-28

mongodb数据丢失的原因及解决方法是什么

MongoDB数据丢失的原因可能有多种,包括硬件故障、网络故障、软件错误、人为操作错误等。以下是一些常见的原因和解决方法:硬件故障:硬盘故障、电源故障等可能导致数据丢失。解决方法可以是定期备份数据,购买可靠的硬件设备,并确保设备处于良好的工
2023-10-21

springboot+atomikos+druid数据库连接失效的原因是什么

今天小编给大家分享一下springboot+atomikos+druid数据库连接失效的原因是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
2023-06-29

什么是redis数据库,及其使用场景

redis 是一种开源键值存储数据库,通过将数据存储在内存中提供极高的性能。它支持多种数据结构,例如字符串、哈希表、链表和集合。redis 的应用场景广泛,包括缓存、会话管理、消息传递、限制速率、排行榜、数据缓存、队列管理、数据聚合和身份验
什么是redis数据库,及其使用场景
2024-04-19

编程热搜

目录