成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Instagram提升PostgreSQL性能的五個(gè)技巧

Instagram提升PostgreSQL性能的五個(gè)技巧

熱門(mén)標(biāo)簽:湖南保險(xiǎn)智能外呼系統(tǒng)產(chǎn)品介紹 小程序智能電話機(jī)器人 怎么去開(kāi)發(fā)一個(gè)電銷(xiāo)機(jī)器人 怎么申請(qǐng)400熱線電話 泗洪正規(guī)電話機(jī)器人找哪家 南昌呼叫中心外呼系統(tǒng)哪家好 河北便宜電銷(xiāo)機(jī)器人軟件 ai電話電話機(jī)器人 簡(jiǎn)單的智能語(yǔ)音電銷(xiāo)機(jī)器人

 隨著Instagram的規(guī)模日益擴(kuò)大,Postgres繼續(xù)充當(dāng)著Instagram的堅(jiān)實(shí)基礎(chǔ),并存儲(chǔ)著絕大部分的用戶數(shù)據(jù)。不到一年之前,我們還曾在博客上說(shuō)Instagram“存儲(chǔ)著大量數(shù)據(jù)”,每秒增加90條數(shù)據(jù),現(xiàn)在,這個(gè)數(shù)據(jù)已經(jīng)增長(zhǎng)到了峰值的10000條。而我們的基礎(chǔ)存儲(chǔ)技術(shù)依然保持不變。

在過(guò)去的兩年半中,我們有一些關(guān)于Postgres擴(kuò)展的經(jīng)驗(yàn)和工具,想要分享出來(lái)。真希望在當(dāng)初啟動(dòng)Instagram的時(shí)候就能有這些經(jīng)驗(yàn)和工具呀。其中有些是Postgres獨(dú)有的,有些是其它數(shù)據(jù)庫(kù)也可以采用的。如果想要了解我們是如何水平分區(qū)的,可以看這篇文章。

1. 局部索引

如果我們經(jīng)常需要按某個(gè)固定的特征過(guò)濾數(shù)據(jù),而且這個(gè)特征只存在于一小部分行里,在這種情況下,局部索引非常有效。

比方說(shuō),Instagram搜索標(biāo)簽的時(shí)候,我們需要找出有許多照片的標(biāo)簽。我們一般會(huì)用ElasticSearch之類(lèi)的技術(shù)來(lái)進(jìn)行高級(jí)搜索,不過(guò)這里只靠數(shù)據(jù)庫(kù)的查詢能力就完全夠了。先來(lái)看一下,按標(biāo)簽查詢,并按照片數(shù)排序,Postgres是怎么做的:
 

EXPLAIN ANALYZE SELECT id from tags WHERE name LIKE 'snow%' ORDER BY media_count DESC LIMIT 10;   
QUERY PLAN 
---------                                 
 Limit (cost=1780.73..1780.75 rows=10 width=32) (actual time=215.211..215.228 rows=10 loops=1)
  -> Sort (cost=1780.73..1819.36 rows=15455 width=32) (actual time=215.209..215.215 rows=10 loops=1)
     Sort Key: media_count
     Sort Method: top-N heapsort Memory: 25kB
     -> Index Scan using tags_search on tags_tag (cost=0.00..1446.75 rows=15455 width=32) (actual time=0.020..162.708 rows=64572 loops=1)
        Index Cond: (((name)::text ~>=~ 'snow'::text) AND ((name)::text ~~ 'snox'::text))
        Filter: ((name)::text ~~ 'snow%'::text)
 Total runtime: 215.275 ms
(8 rows)

有沒(méi)有看到,為了得到結(jié)果,Postgres不得不對(duì)15000行數(shù)據(jù)進(jìn)行排序。由于標(biāo)簽的分布滿足長(zhǎng)尾模式(譯者注: 根據(jù)百度百科,「我們常用的漢字實(shí)際上不多,但因出現(xiàn)頻次高,所以這些為數(shù)不多的漢字占據(jù)了上圖廣大的紅區(qū);絕大部分的漢字難得一用,它們就屬于那長(zhǎng)長(zhǎng)的黃尾?!?,我們可以改為查詢超過(guò)100張照片的標(biāo)簽,先建局部索引:
 
CREATE INDEX CONCURRENTLY on tags (name text_pattern_ops) WHERE media_count >= 100
然后查詢,看一下新的查詢計(jì)劃:
 

EXPLAIN ANALYZE SELECT * from tags WHERE name LIKE 'snow%' AND media_count >= 100 ORDER BY media_count DESC LIMIT 10;
 
QUERY PLAN
 Limit (cost=224.73..224.75 rows=10 width=32) (actual time=3.088..3.105 rows=10 loops=1)
  -> Sort (cost=224.73..225.15 rows=169 width=32) (actual time=3.086..3.090 rows=10 loops=1)
     Sort Key: media_count
     Sort Method: top-N heapsort Memory: 25kB
     -> Index Scan using tags_tag_name_idx on tags_tag (cost=0.00..221.07 rows=169 width=32) (actual time=0.021..2.360 rows=924 loops=1)
        Index Cond: (((name)::text ~>=~ 'snow'::text) AND ((name)::text ~~ 'snox'::text))
        Filter: ((name)::text ~~ 'snow%'::text)
 Total runtime: 3.137 ms
(8 rows)

可以看到,Postgres只需要訪問(wèn)169行,所以速度快得多。Postgres的查詢計(jì)劃器對(duì)約束的評(píng)估也很有效。如果以后想要查詢超過(guò)500張照片的標(biāo)簽,由于這個(gè)結(jié)果集是上面集合的子集,所以仍然會(huì)使用這個(gè)局部索引。

2. 函數(shù)索引

在某些表上,我們需要對(duì)一些很長(zhǎng)的字符串建立索引,比如說(shuō),64個(gè)字符的base64記號(hào)。如果直接建索引的話,會(huì)造成大量的數(shù)據(jù)重復(fù),這種情況下,可以用Postgres的函數(shù)索引:
 

CREATE INDEX CONCURRENTLY on tokens (substr(token), 0, 8)

雖然這樣會(huì)造成許多行匹配相同的前綴,但我們可以在匹配的基礎(chǔ)上再用過(guò)濾,速度很快。而且索引很小,只有大概原來(lái)的十分之一。

3. 用pg_reorg來(lái)讓數(shù)據(jù)更緊湊

隨著時(shí)間的流逝,Postgres的表會(huì)變得越來(lái)越零碎(由MVCC并發(fā)模型等原因引起)。而且,數(shù)據(jù)行插入的順序往往也不是我們希望返回的順序。比如說(shuō),如果我們經(jīng)常要按用戶來(lái)查詢照片等,那么最好是在磁盤(pán)上把這些東西放在一起,這樣就可以減少磁盤(pán)尋道的時(shí)間。

我們用pg_reorg來(lái)解決這個(gè)問(wèn)題,它用三個(gè)步驟來(lái)讓“壓緊”一個(gè)表:

  1.     取得表的獨(dú)占鎖
  2.     建一個(gè)記錄變更的臨時(shí)表,在原始表上加一個(gè)觸發(fā)器,把對(duì)原始表的變更復(fù)制到臨時(shí)表上
  3.     用CREATE TABLE...SELECT FROM...ORDER BY建表,新表?yè)碛性急淼娜繑?shù)據(jù),而且是按索引順序排序的
  4.     將CREATE TABLE執(zhí)行時(shí)間點(diǎn)以后發(fā)生的變更從臨時(shí)表同步過(guò)來(lái)
  5.     業(yè)務(wù)切換到新表

每一步都會(huì)有很多細(xì)節(jié),不過(guò)大體上就是像上面這個(gè)樣子。我們先對(duì)這個(gè)工具進(jìn)行了一些審查,運(yùn)行了若干測(cè)試,然后再把它用到生產(chǎn)環(huán)境上?,F(xiàn)在,我們已經(jīng)在幾百臺(tái)機(jī)器的環(huán)境上跑過(guò)幾十次pg_reorg,沒(méi)出現(xiàn)過(guò)任何問(wèn)題。


4. 用WAL-E進(jìn)行WAL(寫(xiě)前日志)的歸檔和備份

我們用WAL-E來(lái)歸檔WAL日志,它是Heroku寫(xiě)的一個(gè)工具,我們也向它貢獻(xiàn)了一部分代碼。WAL-E大大簡(jiǎn)化了數(shù)據(jù)備份和復(fù)制庫(kù)創(chuàng)建的過(guò)程。

WAL-E是利用Progres的archive_command,將PG產(chǎn)生的每個(gè)WAL文件都?xì)w檔到Amazon的S3。利用這些WAL文件和數(shù)據(jù)庫(kù)的基準(zhǔn)備份,我們可以將數(shù)據(jù)庫(kù)恢復(fù)到基準(zhǔn)備份后任何一個(gè)時(shí)間點(diǎn)的狀態(tài)。利用這個(gè)手段,我們也可以快速創(chuàng)建只讀的復(fù)制庫(kù)或故障備用庫(kù)。

我們?yōu)閃AL-E寫(xiě)了一個(gè)簡(jiǎn)單的封裝腳本,可以監(jiān)控歸檔時(shí)的重復(fù)故障,見(jiàn)GitHub。
 
5. psycopg2中的自動(dòng)提交模式和異步模式

我們也開(kāi)始用psycopg2中的一些高級(jí)功能(psycopg2是Postgres的Python驅(qū)動(dòng))。

一個(gè)是自動(dòng)提交模式。在這個(gè)模式里,psycopg2不會(huì)發(fā)出BEGIN/COMMIT,每個(gè)查詢跑在自己的單語(yǔ)句事務(wù)里。這對(duì)不需要事務(wù)的只讀查詢特別有用。開(kāi)啟很簡(jiǎn)單:

connection.autocommit = True

開(kāi)啟自動(dòng)提交后,我們的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)之間的對(duì)話大減,數(shù)據(jù)庫(kù)服務(wù)器的CPU用量也大減。而且,我們是用PGBouncer作為連接池,開(kāi)啟自動(dòng)提交后,連接的歸還也更快了。

與Django的交互細(xì)節(jié)可以看這里。


psycopg2還有一個(gè)很有用的功能,它可以通過(guò)注冊(cè)一個(gè)等待回調(diào)(wait callback)函數(shù),提供協(xié)同程序(coroutine)支持。它可以支持跨連接查詢,對(duì)命中多個(gè)節(jié)點(diǎn)的查詢非常有用,當(dāng)有數(shù)據(jù)時(shí),socket會(huì)被喚醒(我們利用Python的select模塊來(lái)處理喚醒)。它也可以與eventlet和gevent等多線程庫(kù)很好的協(xié)作,參考實(shí)現(xiàn)可見(jiàn)psycogreen。

總的來(lái)說(shuō),我們對(duì)Postgres的高性能和可靠性十分滿意。想在世界上最大之一的Postgres集群上工作嗎?想跟一群基礎(chǔ)設(shè)施高手們一起干活嗎?請(qǐng)聯(lián)系infrajobs@instagram.com吧。

您可能感興趣的文章:
  • PostgreSQL數(shù)據(jù)庫(kù)服務(wù)端監(jiān)聽(tīng)設(shè)置及客戶端連接方法教程
  • CentOS中運(yùn)行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享
  • PostgreSQL ERROR: invalid escape string 解決辦法

標(biāo)簽:荊門(mén) 景德鎮(zhèn) 江蘇 淮安 柳州 那曲 瀘州 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Instagram提升PostgreSQL性能的五個(gè)技巧》,本文關(guān)鍵詞  Instagram,提升,PostgreSQL,性能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Instagram提升PostgreSQL性能的五個(gè)技巧》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Instagram提升PostgreSQL性能的五個(gè)技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产五月天婷婷| 性生交大片免费全黄| 日本xxxxxxxxxx75| 亚洲三级影院| 电影午夜精品一区二区三区| 久久先锋影音| 久久男人av资源网站| 美女久久一区| 波多野结衣欲乱| 亚洲成人1234| 一个色综合导航| 日韩精品一区二区三区| 伊人国产在线视频| 日韩精品久久理论片| www.五月激情| 日韩免费电影在线观看| 日韩亚洲国产免费| 久久国际精品| 亚洲日本成人网| www.精品在线| 91精品久久久久久综合五月天| 欧美一级电影免费在线观看| 香蕉久久99| 狠狠爱一区二区三区| 色婷婷综合久久久中文一区二区| 先锋男人资源站| www.av黄色| 国产精品久久久久久久久久99| 91大神在线播放精品| 国产va免费精品观看精品| 国精产品一区一区三区有限在线| 一区二区三区电影| 99久久99| 精品一区二区精品| 三级视频在线| 97欧美在线视频| 欧美xxx网站| 污污视频在线| 无码人妻丰满熟妇区毛片蜜桃精品| 岛国av一区二区在线在线观看| 欧美日韩午夜精品| 黄色国产小视频| 成人片在线看| 成人福利在线视频| av免费在线播放| 国产视频123区| av午夜电影| 不卡日本视频| 无码国产伦一区二区三区视频| 亚洲男人都懂的网站| 亚洲精品女av网站| 国产精品三区www17con| 俄罗斯精品一区二区三区| 97免费视频在线播放| 一区二区在线视频播放| 欧美成人黄色小视频| 精品日韩欧美一区| 欧美最猛黑人xxxxwww| 国产精品毛片va一区二区三区| 国外亚洲成av人片在线观看| 亚洲午夜精品视频| 国产精品动漫网站| 免费人成在线观看视频播放| 精品99久久久久久| 欧美日韩免费观看一区=区三区| 蜜桃臀一区二区三区| 欧美丰满熟妇xxxxx| 老司机2019福利精品视频导航| 日韩国产精品一区二区| 亚洲免费视频在线观看| 日本一区二区三区免费视频| 国产精品久久久久久久久久10秀| 久久久人人人| 免费成人av在线播放| 久久久久久一区二区三区四区别墅| 欧美精品在线观看一区二区| 激情综合网俺也去| 男人的天堂网av| 国产高清视频免费最新在线| 超碰高清在线| 快射av在线播放一区| 欧美亚洲激情| 一级片免费观看视频| 国内成人自拍| 欧美精品一区二区免费| 亚洲国产你懂的| 欧美成人激情视频免费观看| 欧美片第一页| www.久久久久久久久| 成人高清视频在线| 日韩欧美国产一区二区在线播放| 精品美女永久免费视频| 青青青手机在线视频| 欧美一级片在线视频| 日本不卡高字幕在线2019| 欧美aⅴ99久久黑人专区| 国产成人精品无码高潮| 欧美大片网址| 色一情一乱一区二区三区| 蜜芽一区二区三区| 久久久久九九九| 久久免费在线观看| 一区精品在线观看| sm国产在线调教视频| 精品色蜜蜜精品视频在线观看| 精品国产日韩欧美| 爱情岛论坛亚洲首页入口章节| 国产三级av在线播放| 男人天堂视频在线| 大胆欧美人体视频| 国产精品视频导航| 狠狠躁夜夜躁人人爽超碰91| 2019国产精品自在线拍国产不卡| 日韩精品福利| 欧美精品免费在线观看| 风流老熟女一区二区三区| 97超碰国产在线| 超碰人人人人人人人| 性欧美丰满熟妇xxxx性久久久| 成年女人免费又黄又爽视频| 久久品道一品道久久精品| 欧美亚洲第一区| 成人久久久久| 国产精品亚洲综合一区在线观看| 一级黄色a毛片| 美女极度色诱视频www免费观看| 国模人体一区二区| 可骚可骚的黄视频网站| 日韩精品视频免费在线观看| 国产精品sm调教免费专区| 狠狠色丁香婷综合久久| 亚洲高清在线观看| 日韩中文av在线| 国产裸体歌舞团一区二区| 亚洲国产日韩a在线播放| 欧美自拍视频| 国产亚洲精品一区二区| 少妇高潮喷水久久久久久久久久| 久久99精品久久久久久青青日本| 99久久免费观看| 综合国产在线| 欧美中文字幕第一页| 五月伊人六月| 日韩精品久久久久久久软件91| 一区二区三区在线资源| 久久99精品国产91久久来源| 欧美美女搞黄| 成人激情校园春色| 欧美日韩三级一区| 性xxxx搡xxxxx搡欧美| 国产欧美综合视频| 久久精品国产精品亚洲综合| 影音先锋亚洲一区| 久久久久久有精品国产| 91精品国产自产观看在线| 欧美日韩精品在线观看| 国产女同无遮挡互慰高潮91| 免费高清一区二区三区| 少妇bbbb搡bbbb| 日本xxxxxxx免费视频| 99久久婷婷国产一区二区三区| 免费在线黄色av| 天天干天天操天天玩| 欧美天堂亚洲电影院在线观看| 欧美色图免费看| 玉米视频成人免费看| 亚洲免费av网址| 日本成人一区二区| 日日骚av一区| www.就去干.com| 日本午夜视频| 变态黄色小视频网站| 在线亚洲免费视频| 国产精品视频白浆免费视频| 丰满爆乳一区二区三区| 欧美黑人ⅹxxx另类猛交| 午夜先锋成人动漫在线| 亚洲最新免费视频| 欧洲精品久久| 成人无遮挡免费网站视频在线观看| 波多野结衣在线免费观看| 亚洲男人的天堂在线视频| 99精品视频国产| 在线观看理论片| 日韩高清在线| 欧美国产日韩一区二区| 日韩美女视频免费在线观看| 美女100%露胸无遮挡| 2018狠狠干| 国产精品91免费在线| 成人午夜电影在线播放| 中文av字幕一区| 国产精品一区二区三区在线观| 手机在线理论片| 国产精品爱啪在线线免费观看| 裸体网站视频| 一呦二呦三呦精品国产| 亚洲国产又黄又爽女人高潮的| 999精品视频在线| 欧美二区三区在线| 亚洲成人网久久久| 国产 日韩 欧美 精品| 国模吧一区二区| 欧美日韩在线视频一区二区| 欧洲av在线播放| 538国产精品一区二区免费视频| 干出白浆视频| 亚洲天堂av在线| 欧美精品啪啪| 国产又黄又嫩又滑又白| 西西裸体人体做爰大胆久久久| 亚洲欧美一区二区三区四区| 裸体一区二区三区| 精品日韩在线一区| 久久久亚洲欧洲日产国码αv| 欧美国产丝袜视频| 免费在线黄网| 亚洲视频1区2区| 久久久999成人| 97超碰人人模人人爽人人看| 亚洲男人天堂2021| 日韩高清一区| 日韩成人三级视频| 欧美成人全部免费| 日韩母乳在线| 精品国产乱码久久久久久影片| 最近2019中文字幕mv免费看| 中文字幕av手机在线| 国产欧美日韩小视频| 欧美暴力调教| 特黄aaaaaaaaa毛片免费视频| 影音先锋在线亚洲| 国产美女视频黄a视频免费| 中文字幕国产亚洲2019| 国产精品视频一区二区久久| 国产一区二区观看| 亚洲小说区图片| 国产美女无遮挡网站| 国产三级欧美三级| 加勒比海盗1在线观看免费国语版| 中文在线播放| 少妇无套高潮一二三区| 欧美18一14sex性处hd| 国产日韩一区欧美| 日本网站在线免费观看视频| 中文字幕亚洲综合久久五月天色无吗''| 国产一区视频在线| 伊人影院在线视频| 欧美黄色www| 国产成人啪精品午夜在线观看| 国产男女猛烈无遮挡a片漫画| 色呦呦网站在线观看| 欧美精品尤物在线| 国产又黄又粗又猛又爽的视频| 4hu最新网址| 成人免费在线播放视频| 亚洲综合99| 免费精品视频一区二区三区| 欧美18—19性高清hd4k| 高清欧美性猛交| 欧美亚洲网站| 欧美天堂在线| 黄色在线免费网站| 91精品91久久久中77777老牛| 免费一区二区三区在线观看| 欧美亚洲国产怡红院影院| 国产对白在线正在播放| 22288色视频在线观看| 欧美在线视频一区二区| 国产精品熟女一区二区不卡| 最新中文字幕亚洲| 色偷偷av一区二区三区| 成人h精品动漫一区二区三区| 91在线精品| 中文字幕日本在线观看| 国产传媒一区二区三区| 法国伦理少妇愉情| 免费av网站大全久久| 一本大道伊人av久久综合| 中文字幕人妻无码系列第三区| 久久久国产一级片| 成人激情免费在线| 日本一区二区不卡| 欧美精品密入口播放| 精品一区电影国产| 国产精品免费视频网站| 亚洲黄色av网站| 在线播放精品一区二区三区| 亚洲精品一区在线| 国产普通话bbwbbwbbw| 国产日韩欧美在线看| 一区二区三区精品牛牛| 日韩av黄色| 亚洲第一黄色网址| 久久亚洲国产中v天仙www| 精品69视频一区二区三区Q| 在线观看视频二区| 免费看黄色av| 97netav| 日产欧产美韩系列久久99| 狠狠色丁香婷婷| 二级片在线观看| 一区二区三区四区国产精品| 欧美乱大交xxxxx潮喷l头像| 91视频 -- 69xx| heyzo在线播放| 色视频在线观看福利| 毛片在线网址播放| 999sesese| 亚洲av无码专区在线播放中文| 欧美男男大粗吊1069| 小泽玛利亚av在线| 亚洲区自拍偷拍| 欧美日韩一卡二卡| 182在线视频观看| 欧美久久久网站| 麻豆系列在线观看| 中文国产成人精品| 免费在线不卡av| 亚洲午夜黄色| 亚洲精品无码久久久| 日韩中文字幕不卡| 精品www久久久久奶水| 国产黄色一级电影| 国产精品女同互慰在线看| 狠狠操视频网| 精品无码久久久久久久久| 国产白丝袜美女久久久久|