表分区的缺点(例如SQL Server)



我从未对表进行分区,但是从我阅读的内容来看,它在查询和归档数据方面具有许多优势。

它比创建索引优越吗?有缺点吗?分区花费的时间是唯一的成本吗?

有两个理由可以分区表格 - 如果它很大,或者您需要快速添加或删除数据片。

在不同的大审核表上,您可能会发现将表分为每月分区很有用。这样,当您搜索给定月份的行时,SQL Server只需查看与该月相关的分区。选择时,您可以将分区视为典型表 - 无需特殊语法。

如果在新月开始时,您可能需要删除最古老的数据,并添加最新的月份,那么它是一个简单的操作,可以放下分区并添加分区。SQL Server不必重建整个表上的索引 - 它只是掉落并在内部添加分区作为元操作,通常需要几秒钟。

这样做的SQL并不难,您可以安排备份单个分区。但是SQL Server中的分区仅在Enterprise Edition上可用,并且分区表无法恢复到SQL Server的其他版本。

背景:

如果大多数操作发生在内存中,则数据库查询的延迟将很低。数据库竭尽全力自动执行此操作。他们还提供调整选项,以确保可以正确设置您的缓冲缓存/缓冲池和其他选项。

为什么要分区表?

随着我们不断向表添加行,主键索引的大小以及表上的任何其他索引也会增长。一旦它们生长到整个索引不适合所配置的缓冲区大小(位置存储经常访问的页面的位置(,数据库引擎将必须从磁盘中转去并获取索引页面,从而减慢查询的速度。

它的不优于索引,它是一种不同的技术。

前往分区途径

  • 检查查询的解释计划(如果有特定的访问模式(,并调整它以确保使用正确的索引并且磁盘操作受到限制。
  • 检查所讨论的表格和索引的大小及其与配置的数据库内存(缓冲池(的关系。
  • 检查表是否可以碎片。所有数据库都提供执行此操作的命令(MySQL称其为优化,PostgreSQL称其为真空(
  • 检查是否可以将内存添加到服务器,RAM便宜。

分区的优势

  • 较小的桌子,较小的索引,较低的查询延迟。

缺点

  • 侵入性,因为应用程序需要更改才能写入正确的分区。如果分区的数量越来越长,则分区也存在相同的问题。为了增加分区计数,需要进行全面重新分配。当然是一项非平凡活动。

最新更新