IT袋

当前位置:主页 > 经验教程 > 建站编程 >

管理大型Postgres数据库的3个技巧

管理大型Postgres数据库的3个技巧

时间:2023-09-23 11:35:12 来源:IT袋 作者:苏晓敏
导读:管理大型Postgres数据库的3个技巧,文章导读:管理大型Postgres数据库的3个技巧的话题,下面小编为您详细解答 在处理庞大的数据库时,请尝试这些方便的解决方案,以解决常见的问题。 关系型数据库 Po

管理大型Postgres数据库的3个技巧

文章导读:管理大型Postgres数据库的3个技巧的话题,下面小编为您详细解答

管理大型Postgres数据库的3个技巧

在处理庞大的数据库时,请尝试这些方便的解决方案,以解决常见的问题。

关系型数据库 PostgreSQL(也被称为 Postgres)已经越来越流行,全球各地的企业和公共部门都在使用它。随着这种广泛的采用,数据库已经变得比以前更大了。在 Crunchy Data,我们经常与 20TB 以上的数据库打交道,而且我们现有的数据库还在继续增长。我的同事 David Christensen 和我收集了一些关于管理拥有巨大表的数据库的技巧。

大表

生产数据库通常由许多具有不同数据、大小和模式的表组成。常见的情况是,最终有一个巨大的、无序的数据库表,远远大于你数据库中的任何其他表。这个表经常存储活动日志或有时间戳的事件,而且对你的应用或用户来说是必要的。

真正的大表会因为很多原因造成挑战,但一个常见的原因是锁。对表的定期维护往往需要锁,但对大表的锁可能会使你的应用瘫痪,或导致堵塞和许多令人头痛的问题。我有一些做基本维护的技巧,比如添加列或索引,同时避免长期运行的锁。

添加索引的问题:在创建索引的过程中锁住表。如果你有一个庞大的表,这可能需要几个小时。

CREATE INDEX ON customers (last_name)

方案:使用CREATE INDEX CONCURRENTLY功能。这种方法将索引创建分成两部分,一部分是短暂的锁定,以创建索引,立即开始跟踪变化,但尽量减少应用阻塞,然后是完全建立该索引,之后查询可以开始使用它。

CREATE INDEX CONCURRENTLY ON customers (last_name)

添加列

在数据库的使用过程中,添加列是一个常见的请求,但是对于一个巨大的表来说,这可能是很棘手的,同样是由于锁的问题。

问题:当你添加一个新的默认值为一个函数的列时,Postgres 需要重写表。对于大表,这可能需要几个小时。

方案:将操作拆分为多条基本语句,总效果一致,但控制锁的时间。

添加列:

ALTER TABLE all_my_exes ADD COLUMN location text

添加默认值:

ALTER TABLE all_my_exes ALTER COLUMN location SET DEFAULT texas

使用UPDATE来添加默认值:

UPDATE all_my_exes SET location = DEFAULT

添加约束条件

问题: 你想添加一个用于数据验证的检查约束。但是如果你使用直接的方法来添加约束,它将锁定表,同时验证表中的所有现有数据。另外,如果在验证的任何时候出现错误,它将回滚。

相关阅读

  • MySQL数据库基本操作 MySQL基本操作指南

    MySQL数据库基本操作 MySQL基本操作指南

    关于这方面的知识你知道吗?MySQL数据库基本操作的话题,接下来IT袋网带大家一起了解。 基本操作有:查看有哪些数据库、查看有哪些表、创建数据库、创建表、查看表信息、向表中插入数据

  • 数据库系统有哪些特点 简单数据库设计案例

    数据库系统有哪些特点 简单数据库设计案例

    小编为你介绍数据库系统有哪些特点和简单数据库设计案例方面的讲解,一起来看看吧! 数据库系统概论(第5版)第1版于1983年出版,至今已修订至第5版。《数据库系统概论(第5版)》系统

  • “不是有效的 Win32 应用程序”的错误原因以及解决方案

    “不是有效的 Win32 应用程序”的错误原因以及解决方案

    今天带来的IT技巧小经验不是有效的及Win32的内容,接下来一起来看看吧。 这篇文章专门针对计算机用户可能遇到的一个常见问题:“不是有效的 Win32 应用程序”的错误提示。 我们将深入讨论

  • 如何注册公司网站域名 关于申请建立网站

    如何注册公司网站域名 关于申请建立网站

    今日重点为您介绍如何注册公司网站域名和关于申请建立网站方面的内容,一定能解决您的问题的,一起来了解吧! 很多企业都开始建网站了,但是有很多小企业没有注册过,所以不太明白,