w88_优德88官方网站_优德88手机登录

优德88下载官网_优德88俱乐部_优德88游戏下载

admin1个月前259浏览量

一分钟时刻一再考虑。很有或许从现有的Postgres数据库中取得更多收益。它能够扩展以应对重载,并供给乍一看并不显着的强壮功用。例如,能够启用内存中缓存,文本查找,专用索引和键值存储。

阅览本文之后,您或许想从数据存储中列出所需的功用,并检查Postgres是否合适它们。它关于大多数应用程序来说满足强壮。

为什么增加另一个数据存储并不总是一个好主意

正如弗雷德·布鲁克斯(Fred Brooks)在《神话人月》中所说的那样:“程序员,就像诗人相同,只需求从朴实的思维中移除一点。[他们]随便发挥想象力,在空中,空中制作城堡。”

为这些城堡增加更多的零件,并迷失在规划中,这是无量的魅力。可是,在实践国际中,空中制作更多的城堡会阻碍您的行进。数据存储中的最新炒作也是如此。挑选无聊的技能有几个长处:

  • 假如有新人参加您的团队,他们能够轻松地了解您的不同数据存储吗?
  • 一年后,当您或另一个团队成员回来时,他们是否能够敏捷把握体系的作业原理?
  • 假如您需求更改体系或增加功用,则需求移动几块?
  • 您是否考虑了保护本钱,安全性和晋级?
  • 在大规划出产中运转新数据存储时,您是否考虑了不知道和失利形式?

虽然能够经过周到的规划进行办理,可是增加多个数据存储的确会增加杂乱性。在探究增加其他数据存储之前,值得研究一下现有数据存储能够为您供给哪些附加功用。

Postgres不为人知但功用强壮的功用

许多人没有意识到Postgres供给的不仅仅是SQL数据库。假如仓库中现已有Postgres,为什么在Postgres能够完结这项作业时又增加更多的零件?

Postgres高速缓存

有一个误解,以为Postgres在每个查询中都从磁盘读取和写入数据,尤其是当用户将其与像Redis这样的纯内存数据存储区进行比较时。

实践上,Postgres有一个规划精巧的缓存体系,其间包括页面,运用计数和业务日志。您的大多数查询都不需求拜访磁盘,尤其是当它们重复查询相同的数据时(尤其是许多查询倾向于这样做)。

Postgres装备文件中的shared_buffer装备参数确认它将用于缓存数据的内存量。一般,应将其设置为总内存的25%到40%。这是因为Postgres还将操作体系缓存用于其操作。有了更多的内存,大多数引证相同数据集的重复查询将不需求拜访磁盘。您能够经过以下办法在Postgres CLI中设置此参数:

ALTER SYSTEM SET shared_buffer TO = 

比如Heroku之类的保管数据库服务供给了几种方案,其间RAM(以及缓存)是首要差异。免费的业余版别不供给比如RAM之类的专用资源。准备好接受出产负荷时进行晋级,以便能够更好地运用缓存。

您还能够运用一些更高档的缓存东西。例如,检查pg_buffercache视图以检查正在占用您实例的同享缓冲区缓存的内容。另一个要运用的东西是pg_prewarm函数,它是根底装置的一部分。此功用使DBA能够将表数据加载到操作体系缓存或Postgres缓冲区缓存中。该进程能够是手动或主动的。假如您知道数据库查询的性质,则能够大大进步应用程序功用。

关于真实勇敢的人,请参阅本文以深化了解Postgres缓存。

扩展Postgres的技巧

假如出于功用原因考虑封闭Postgres,请首要检查运用它供给的优化能够到达的程度。在这儿,咱们假定您现已完结了根底作业,例如创立恰当的索引。Postgres供给了许多高档功用,虽然更改很小,但能够带来很大的不同,特别是假如它使您防止根底架构杂乱化。

不要过度索引

防止不必要的索引。慎重运用多列索引。过多的索引占用了额定的内存,然后无法更好地运用Postgres缓存,这对功用至关重要。

运用这样的东西EXPLAIN ANALYZE或许会使查询方案程序实践挑选次序表扫描的频率使您感到惊奇。因为表的许多行数据已被缓存,因而一般甚至不运用这些杂乱的索引。

就是说,假如您发现查询速度慢,第一个也是最显着的解决方案是检查表是否短少索引。索引至关重要,可是您有必要正确运用它们。

了解Postgres索引类型

为数据挑选正确的索引能够进步功用。以下是一些常见的索引类型以及何时应运用每种索引类型。

  • B树索引

B树索引是用于有用排序数据的二叉树。假如运用该INDEX指令,它们是默认值。大多数时分,B树索引就满足了。在扩展时,不一致或许是一个更大的问题,因而请定时运用amcheck扩展名。

  • BRIN指数

当表格天然现已按列排序时,能够运用块规划索引(BRIN),而您需求按该列排序。例如,关于次序写入的日志表,在timestamp列上设置BRIN索引可让服务器知道数据已被排序。

  • 布隆过滤器指数

Bloom索引十分合适只需求测验持平性的大表上的多列查询。它运用一种称为布隆过滤器的特别数学结构,该结构根据概率而且运用的空间大大削减。

  • GIN和GiST索引

将GIN或GiST索引证于根据复合值(例如文本,数组和JSON)的有用索引。

深重的实时处理

假如您遇到许多发布事情,作业和数十名作业人员需求和谐的状况,则或许需求像Apache Kafka这样更专业的解决方案。LinkedIn工程师开始是开发Kafka来处理新的用户事情,例如单击,邀请和音讯,并答应不同的作业人员处理音讯传递和作业来处理数据。

即时全文查找

假如您的实时应用程序负载深重,一非必须进行十次以上的查找,而且需求主动完结等功用,那么您或许会从Elasticsearch这样的专用文本解决方案中收获颇丰。

定论

Redis,Elasticsearch和Kafka功用强壮,可是有时增加它们弊大于利。您能够运用咱们这儿介绍的不为人知的功用来取得Postgres所需的功用。保证充分运用Postgres能够节约您的时刻,并有助于防止增加杂乱性和危险。

为了节约更多时刻和头痛,请考虑运用比如Heroku Postgres之类的保管服务。扩展规划很简单,只需增加其他重视者副本即可,只需单击即可打开高可用性,Heroku会为您进行操作。假如您的确需求扩展到Postgres之外,那么咱们上面说到的其他数据存储(例如Redis,Apache Kafka和Elasticsearch)都能够在Heroku上轻松装备。持续并在空中制作您的城堡-但将它们固定在牢靠的根底上,这样您就能够愿望取得更好的产品和客户体会。