2KB项目,专业的源码交易网站 帮助 收藏 每日签到

PostgreSQL 硬件功能调剂

  • 时间:2019-03-14 06:38 编辑:2KB 来源:2KB.COM 阅读:362
  • 扫一扫,手机访问
  • 分享
摘要:
PostgreSQL 英文原文:PostgreSQL Hardware Performance Tuning

POSTGRESQL 是一个工具关系型数据库,由来自全球一组收集开辟者开辟。它是一个可替代如Oracle、Informix贸易数据库的开源版本。

POSTGRESQL 最后由加州大学伯克利分校开辟。1996年,一个小组开端在互联网上开辟该数据库。他们运用email分享设法,用文件Server分享代码。POSTGRESQL如今在功用方面、功能方面和牢靠性上可与贸易数据库比肩。它支撑事务、视图、存储进程和参考完好性束缚。它也支撑大量的编程接口,包含ODBC、Java(JDBC)、TCL/TK、PHP、Perl和Python。得益于互联网开辟者人材库,POSTGRESQL 另有宽广的增加空间。

其它翻译版本 (1) 加载中

功能观点

数据库功能优化有两个方面。一方面是进步数据库对电脑CPU,内存和硬盘的运用。另外一方面是最优化通报到数据库的查询。这篇文章会商的是在硬件方面优化数据库功能。经过运用例如:CREATE INDEX,VACUUM,VACUUM FULL,ANALYZE,CLUSTER和EXPLAIN这些数据库SQL号令,插叙查询的最优化曾经完成了。这些在我写的《PostgreSQL:Introduction and Concepts》(http://momjian.us/main/writings/pgsql/aw_pgsql_book/)这本书中曾经会商过了。

为了了解硬件功能的问题,就必需了解在电脑的外部发作了甚么。容易的说,一台电脑可以被视为一个被存储器解围的地方处置单位(CPU)。在和CPU统一小片上的是分歧的存放器,它们保管了两头运算后果和各类指针和计数器。解围这些的是CPU cache,此中有最新的拜访信息。超出CPU cache是大量的随机存取存储器(RAM),它保管了正在运转的顺序和数据。在RAM的外围就是硬盘了,它保管了愈加多的信息。硬盘是独一可以永世存储信息的区域。,所以电脑关机后,一切被保管下来的信息都在这里。归结起来,这些是解围CPU的存储区域:

includegraphics[height=0.25	extheight]{caches}

存储区域 容量

CPU存放器    几字节

CPU高速缓存 几千字节

RAM           几兆字节

硬盘           几千兆字节

你可以看到贮存巨细跟着离CPU间隔的增加而增加。实际上,大容量的永世存储可以被安顿在CPU的旁边,可是这将变的很慢并且很昂贵。实践傍边,最经常使用的信息被放在CPU的旁边,而不怎样用的信息就放得离CPU远远的。在CPU需求的时分再拿给CPU。

延长数据与 CPU 的间隔

数据在各类存储区域的转移是主动履行的。编译器决议哪些数据存在存放器外头。CPU 决议哪些数据存在缓存外面。 操纵零碎担任内存和硬盘之间的数据交流。 

数据库***对 CPU 的存放器弛缓存力所不及。要进步数据库的功能,只能经过增加内存中的有效数据量, 从而减少磁盘拜访来取得。

看似容易, 实在否则, 内存中的数据包括非常多工具: 

  • 正在履行中的顺序

  • 顺序的数据和仓库

  • POSTGRESQL 同享缓存

  • 内核磁盘缓存

  • 内核

幻想的功能调剂, 既要增加内存中的数据库数据占领量,又不克不及对零碎形成负面影响。 

POSTGRESQL 同享缓存

includegraphics[height=0.35	extheight]{buffer_stack}

POSTGRESQL 没有间接拜访磁盘,而是拜访 POSTGRESQL 的缓存。然后再由 POSTGRESQL 的后台顺序读写这些数据块, 最初写到磁盘上。 

后台起首在表中,查找缓存能否曾经存在这些数据。 有, 就持续处置。没有, 则由操纵零碎从内核磁盘缓存, 或许间接从磁盘加载这些数据。不管哪种,价格都很高。 

POSTGRESQL 默许分派 1000 个缓存。每一个缓存有 8k 字节。增加缓存的数目,能增加后台拜访缓存的频率,减少价格较高的零碎恳求。缓存的数目,可以经过 postmaster 号令行的参数, 或许设置装备摆设文件 postgresql.conf 中的 shared_buffers 的值来设置。 

多大才算太大?

includegraphics[width=0.8***width]{memory}

你可能在想, “那我把一切的内存都分派给 POSTGRESQL 的缓冲区好了”。 假如你这么做, 那零碎内核和其他顺序就没有内存可用了。幻想的 POSTGRESQL 同享缓冲区巨细,是在没有对零碎发生晦气影响的状况下, 越大越好。 

要了解甚么是晦气影响,起首要清楚 UNIX 是怎么治理内存的。如果内存容量足够大,能容下一切的顺序和数据。 那我们也就用不着治理内存了。问题是, 内存的容量有限,所以, 需求内核将内存中的数据分页, 存入磁盘,这就是传说的的数据交流。道理是, 将以后用不上的数据移到磁盘中。这个操纵叫做交流区页面移入(swap pageout)。页面移入交流区不难,只需在顺序非活泼期履行就能够。问题在于, 页面从头从交流区移出来的时分。 也就是, 移到交流区的旧页面, 又从头移回内存。这个操叫交流区移出( swap pagein)。说它是个问题, 是由于, 当页面移入内存的时分, 顺序需求终止履行, 直到移入操纵完成。 

零碎的页面移入活泼状况, 可以经过像 vmstatand sar 这类零碎剖析Tools来检查, 能否有足够的内存, 保持零碎的正常运作。不要把交流区页面移出,跟惯例的页面移出搞混了。惯例的页面移出, 将页面数据从文件零碎中读出来,看成是零碎操纵的一部分。假如你看不出, 能否有交流区页面移出操纵。可是交流区页面移入的操纵十分活泼, 这也阐明,有大量的页面移出的操纵正在实行。

高速缓存cache)容量的影响

也许你会想为何高速缓存的巨细如斯主要。起首,试想一下PostgreSQL同享缓存大到可以放下整张表。反复延续扫描这张表就不需求硬盘的介入,由于数据曾经在cache里了。如今假定cache比表小一个单位。一次延续的扫描将会把一切单位载入cache直到最初一个单位。当需求最初一个单位时,最后的单位被移除。当另外一次延续扫描开端的时分,最后的单位曾经不再cache里了,为了载入它,最开端的单位会被移除,也就是第一次扫描时的第二个单位会被移除。这将继续实行到单位完毕。这个例子很极端,可是你可以看到减少一个单位就将会把cache的效力从100%变成0%。这标明找到适宜的cache容量会戏剧性的改动功能。

适宜容量的同享缓存

实际上,POSTGERSQL同享缓存将是:

  • 它应当足够大来敷衍凡是的表拜访操纵。

  •  它应当足够小来防止 swap pagein 的发作。

记着数据库治理器运转时分派一切的同享存储。这一区域即便在没有拜访数据库的恳求时也坚持一样巨细。一些操纵零碎pageout未指定的同享存储,而另外一些LOCK同享存储到RAM中。LOCK奉献存储更好一点。P OSTGERSQL的***指点手册里有关于分歧操纵零碎中心设置装备摆设的信息, http://developer.postgresql.org/docs/postgres/kernel-resources.html

内存排序行列巨细

另外一个优化参数是排序行列的内存总量。当对大表或一个记载集排序时,PostgerSQL会将他们分块排序,将两头后果存储在暂时文件里。这些文件将在一切行列处置终了后兼并运用。增加每行列的巨细就会发生更少的暂时文件同时放慢处置速度。然后,假如行列过大,部分外存行列就会在处置过程当中pageout到虚拟内存从而招致pagein的发作。因而,用小点的行列发生更多的暂时文件会快非常多,但又一次,当太多内存被分派时,虚拟内存pagein发生。记着这个参数是后端运用在处置批次上的,而不是 ORDER BY, CREATE INDEX兼并。几多同时的排序就会用几多倍这么多的内存。

这个值可以经过数据库治理器号令行标记改动或经过改动在postgresql.conf中sort_mem的值来改动。

其它翻译版本 (1) 加载中

缓存范围和排序范围

缓存范围和排序范围城市影响内存的运用。你不成能增加一个的范围, 而不影响别的一个。记着,缓存的范围是在 postmaster 启动的时分, 就设好的。 而排序的范围择由排序的数目决议。普通状况下,缓存范围要大过排序的范围。不外, 某些用到 ORDER BY, CREATE INDEX 或数据兼并的查询, 可以经过加大排序范围来提速。 

另外, 很多操纵零碎对同享内存的分派有限制。修正这一限制, 就意味着, 要从头编译或许设置装备摆设内核。也就是说, 你要对操纵零碎这方面相当纯熟才行。更多信息, 参考 POSTGRESQL ***操纵手册,http://developer.postgresql.org/docs/postgres/kernel-resources.html.

在调剂的开端,运用15%的RAM作为缓存巨细,假如有几个大的事物就用2-4%的内存做排序巨细,假如你有非常多大事物的话就运用更小的内存。你可以测验考试进步它来看看功能能否晋升,swapping交流能否发作。假如同享缓存过大,你就破费太多工夫来保护大量的缓存,并且它会糜费掉本可以被其他过程运用的RAM,没法作为额定的内核磁盘的缓存。

有价值的Server参数是effective_cache_size。这个参数被优化器用来估量内核磁盘缓存的巨细。在运用一致缓存的内核里,这个值应当设为内核未运用RAM的均匀值,由于如许内核就能够运用未运用的RAM来缓存比来拜访的磁盘页。在有牢固磁盘缓存的内核里,这个值应当设为内核缓存的巨细,通常是RAM的10%。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部