數(shù)據(jù)庫總大小:17.3GB、總記錄數(shù):4千萬零450條、信息數(shù)量:2千萬條、單表最大信息數(shù):400萬條一、前言:帝 國CMS 6.0版本最重要的升級功能是對系統(tǒng)構架進行升級,構架更加完美、負載容量更大。然而很多人就問,這個全新的構架有多大的魅力、容量是多少?其實我也不能 準確的告訴你,因為6.0剛發(fā)布不久并且沒有空閑時間測試,那時我只能告訴你“總體容量可無限放大,單表存放容量是原來的幾十倍、甚至更多,副表數(shù)據(jù)量達 到一定大小后可設置分表,副表支持無限分表,因而副表容量是無限的”。然而理論是需要實踐去驗證的,所以趁著這兩天比較空閑試著測試,并且測試結果令我非 常吃驚,在2000萬數(shù)據(jù)中最大的news單表中從50萬導到400萬數(shù)據(jù)無論從生成內容頁效率還受理信息列表竟然沒有多大差別:單表無論是50萬還是400萬生成5000個內容頁速度為:19秒單表無論是50萬還是400萬后臺管理信息列表速度為:0.009秒 二、測試環(huán)境1、硬件配置:使用本人工作使用的機器測試,普通的配置CPU:2.0 GHz 內存:1GB 2、軟件環(huán)境:使用無任何優(yōu)化的帝國CMS6.0一鍵安裝包WINDOWS 2003APACHE 2.2.4PHP 5.2.0MYSQL 5.0.27ZEND Optimizer 3.2.6帝國CMS6.0開源版(GBK)(注:因為只是測試所以采用效率比較一般的WINDOWS平臺,最好的PHP+MYSQL運行環(huán)境建議采用LINUX或UNIX平臺。) 三、以2000萬數(shù)據(jù)中最大的news表數(shù)據(jù)量為400萬、數(shù)據(jù)表大小為3.4GB為例:400萬單表情況下生成5000條數(shù)據(jù):19秒1、后臺點管理信息列表速度:0.008秒2、修改信息頁讀取數(shù)據(jù):0.005秒3、400萬單表情況下生成5000條數(shù)據(jù):19秒開始生成:生成過程截圖:5000條生成時間:19秒查看成后的欄目目錄HTML:4、測試在使用內容動態(tài)頁的數(shù)據(jù)讀取速度:0.0025秒四、由于章節(jié)比較多,所以不能在貼子中說明,點擊下面鏈接查看完整的測試過程《2 千萬數(shù)據(jù)、17.3GB數(shù)據(jù)庫用帝國CMS6.0分表合理存放》分成數(shù)個篇章對帝國CMS大數(shù)據(jù)量如何合理存放的進行介紹,整個測試過程都是邊運行邊截 圖,采用透明、公開的方式供大家監(jiān)督!如果有誰對測評過程和測評結果有疑問,可以自行參照我們的測試過程搭建類似的測試環(huán)境自己測試和對比測試結果。點擊這里查看完整的測試過程:/ecms6/jm/20000000/20000000.html五、本次2000萬數(shù)據(jù)最終測試數(shù)據(jù)統(tǒng)計:本次測試經(jīng)驗總結:優(yōu)點: 6.0在大數(shù)據(jù)下的優(yōu)勢非常明顯,生成內容頁、動態(tài)內容頁效率非常之快且不受數(shù)據(jù)量影響,解決了CMS負載最大的問題,并且使用按表管理信息列表速度很快,單表幾十萬和幾百萬數(shù)據(jù)沒有明顯區(qū)別。不足之處: 在 于單欄目數(shù)據(jù)量大于200萬時標簽調用、欄目列表速度有所下降(指的是增加檢索條件的情況),主要由于最耗資源的置頂排序與多重排序,下版會考慮刪除置頂 功能與優(yōu)化列表,并且會增加大數(shù)據(jù)量標簽調用優(yōu)化處理功能,以達到所有頁面速度在大數(shù)據(jù)量都很優(yōu)秀,不僅是內容頁效率優(yōu)秀。本次測試 2000萬只是本人空閑時搞的小測試,主要讓大家知道帝國分表如何處理更好,只要分表均勻可以將一個很大的數(shù)據(jù)分解成無數(shù)個相同效率的表,單表無論是50 萬、400萬甚至1000萬數(shù)據(jù)在管理信息列表與生成頁面效率基本是相同的,例如:5000萬數(shù)據(jù)中12個欄目可以分成每表存放450萬,每個450萬數(shù) 據(jù)表效率都是一樣的。未來版本帝國將會推出更完美的構架,主表可以像副表一樣無限分表,讓系統(tǒng)性能再度翻倍提升。做一個完美的安全、穩(wěn)定高效、強大、靈活 的CMS是我們的終極目標,多年來我們一直朝這個方向邁進,不斷創(chuàng)新不斷完善。帝國軟件以為中國網(wǎng)站提供最完善的建站解決方案為已任,打造國內最好的 CMS程序。帝國CMS對大數(shù)據(jù)情況建議:數(shù)據(jù)表結構最好的優(yōu)化是將所有的自定義字段都存放到副表;主表只存放標題字段;總體的數(shù)據(jù)表數(shù)據(jù)分配均勻,主表下的每個副表存放建議100萬數(shù)據(jù)以內;內容頁減少標簽調用或采用JS調用或者采用.shtml包含最新內容頁面的方式;欄目列表設置最大顯示數(shù)量;過期信息或不再調用的信息進行歸檔;減少使用搜索,搜索是最耗資源的功能;自行修改文件去除標簽和列表的置頂排序(置頂功能下版會默認刪除),對性能更高要求的可只采用id排序;優(yōu)化運行環(huán)境,特別是MYSQL數(shù)據(jù)庫優(yōu)化;服務器配置最好2GB以上內存、采用更快的CPU以及硬盤轉速緩存更高IO更快。未來帝國CMS版本對大數(shù)據(jù)方面功能展望: 標簽調用與列表性能優(yōu)化,刪除置頂功能并且對標簽調用優(yōu)化處理;主表結構更加優(yōu)化。推出更完美的構架,主表可以像副表一樣無限分表,讓系統(tǒng)無論從維護數(shù)據(jù)還是生成頁面性能將再度翻倍提升。多服務器結構支持,實現(xiàn)負載均衡。增加Oracle、postgresql、Mssql等多種數(shù)據(jù)庫支持。......更多功能我們正在不斷的探索與創(chuàng)新,相信會給大家更多的驚喜。附:帝國CMS6.0系統(tǒng)數(shù)據(jù)構架圖
創(chuàng)新互聯(lián)是一家專業(yè)提供東源企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、成都網(wǎng)站設計、html5、小程序制作等業(yè)務。10年已為東源眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
1. CouchDB
所用語言: Erlang
特點:DB一致性,易于使用
使用許可: Apache
協(xié)議: HTTP/REST
雙向數(shù)據(jù)復制,
持續(xù)進行或臨時處理,
處理時帶沖突檢查,
因此,采用的是master-master復制(見編注2)
MVCC – 寫操作不阻塞讀操作
可保存文件之前的版本
Crash-only(可靠的)設計
需要不時地進行數(shù)據(jù)壓縮
視圖:嵌入式 映射/減少
格式化視圖:列表顯示
支持進行服務器端文檔驗證
支持認證
根據(jù)變化實時更新
支持附件處理
因此, CouchApps(獨立的 js應用程序)
需要 jQuery程序庫
最佳應用場景:適用于數(shù)據(jù)變化較少,執(zhí)行預定義查詢,進行數(shù)據(jù)統(tǒng)計的應用程序。適用于需要提供數(shù)據(jù)版本支持的應用程序。
例如: CRM、CMS系統(tǒng)。 master-master復制對于多站點部署是非常有用的。
(編注2:master-master復制:是一種數(shù)據(jù)庫同步方法,允許數(shù)據(jù)在一組計算機之間共享數(shù)據(jù),并且可以通過小組中任意成員在組內進行數(shù)據(jù)更新。)
2. Redis
所用語言:C/C++
特點:運行異常快
使用許可: BSD
協(xié)議:類 Telnet
有硬盤存儲支持的內存數(shù)據(jù)庫,
但自2.0版本以后可以將數(shù)據(jù)交換到硬盤(注意, 2.4以后版本不支持該特性?。?/p>
Master-slave復制(見編注3)
雖然采用簡單數(shù)據(jù)或以鍵值索引的哈希表,但也支持復雜操作,例如 ZREVRANGEBYSCORE。
INCR co (適合計算極限值或統(tǒng)計數(shù)據(jù))
支持 sets(同時也支持 union/diff/inter)
支持列表(同時也支持隊列;阻塞式 pop操作)
支持哈希表(帶有多個域的對象)
支持排序 sets(高得分表,適用于范圍查詢)
Redis支持事務
支持將數(shù)據(jù)設置成過期數(shù)據(jù)(類似快速緩沖區(qū)設計)
Pub/Sub允許用戶實現(xiàn)消息機制
最佳應用場景:適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內存容量)的應用程序。
例如:股票價格、數(shù)據(jù)分析、實時數(shù)據(jù)搜集、實時通訊。
(編注3:Master-slave復制:如果同一時刻只有一臺服務器處理所有的復制請求,這被稱為
Master-slave復制,通常應用在需要提供高可用性的服務器集群。)
3. MongoDB
所用語言:C++
特點:保留了SQL一些友好的特性(查詢,索引)。
使用許可: AGPL(發(fā)起者: Apache)
協(xié)議: Custom, binary( BSON)
Master/slave復制(支持自動錯誤恢復,使用 sets 復制)
內建分片機制
支持 javascript表達式查詢
可在服務器端執(zhí)行任意的 javascript函數(shù)
update-in-place支持比CouchDB更好
在數(shù)據(jù)存儲時采用內存到文件映射
對性能的關注超過對功能的要求
建議最好打開日志功能(參數(shù) –journal)
在32位操作系統(tǒng)上,數(shù)據(jù)庫大小限制在約2.5Gb
空數(shù)據(jù)庫大約占 192Mb
采用 GridFS存儲大數(shù)據(jù)或元數(shù)據(jù)(不是真正的文件系統(tǒng))
最佳應用場景:適用于需要動態(tài)查詢支持;需要使用索引而不是 map/reduce功能;需要對大數(shù)據(jù)庫有性能要求;需要使用
CouchDB但因為數(shù)據(jù)改變太頻繁而占滿內存的應用程序。
例如:你本打算采用 MySQL或 PostgreSQL,但因為它們本身自帶的預定義欄讓你望而卻步。
4. Riak
所用語言:Erlang和C,以及一些Javascript
特點:具備容錯能力
使用許可: Apache
協(xié)議: HTTP/REST或者 custom binary
可調節(jié)的分發(fā)及復制(N, R, W)
用 JavaScript or Erlang在操作前或操作后進行驗證和安全支持。
使用JavaScript或Erlang進行 Map/reduce
連接及連接遍歷:可作為圖形數(shù)據(jù)庫使用
索引:輸入元數(shù)據(jù)進行搜索(1.0版本即將支持)
大數(shù)據(jù)對象支持( Luwak)
提供“開源”和“企業(yè)”兩個版本
全文本搜索,索引,通過 Riak搜索服務器查詢( beta版)
支持Masterless多站點復制及商業(yè)許可的 SNMP監(jiān)控
最佳應用場景:適用于想使用類似 Cassandra(類似Dynamo)數(shù)據(jù)庫但無法處理
bloat及復雜性的情況。適用于你打算做多站點復制,但又需要對單個站點的擴展性,可用性及出錯處理有要求的情況。
例如:銷售數(shù)據(jù)搜集,工廠控制系統(tǒng);對宕機時間有嚴格要求;可以作為易于更新的 web服務器使用。
5. Membase
所用語言: Erlang和C
特點:兼容 Memcache,但同時兼具持久化和支持集群
使用許可: Apache 2.0
協(xié)議:分布式緩存及擴展
非??焖伲?00k+/秒),通過鍵值索引數(shù)據(jù)
可持久化存儲到硬盤
所有節(jié)點都是唯一的( master-master復制)
在內存中同樣支持類似分布式緩存的緩存單元
寫數(shù)據(jù)時通過去除重復數(shù)據(jù)來減少 IO
提供非常好的集群管理 web界面
更新軟件時軟無需停止數(shù)據(jù)庫服務
支持連接池和多路復用的連接代理
最佳應用場景:適用于需要低延遲數(shù)據(jù)訪問,高并發(fā)支持以及高可用性的應用程序
例如:低延遲數(shù)據(jù)訪問比如以廣告為目標的應用,高并發(fā)的 web 應用比如網(wǎng)絡游戲(例如 Zynga)
6. Neo4j
所用語言: Java
特點:基于關系的圖形數(shù)據(jù)庫
使用許可: GPL,其中一些特性使用 AGPL/商業(yè)許可
協(xié)議: HTTP/REST(或嵌入在 Java中)
可獨立使用或嵌入到 Java應用程序
圖形的節(jié)點和邊都可以帶有元數(shù)據(jù)
很好的自帶web管理功能
使用多種算法支持路徑搜索
使用鍵值和關系進行索引
為讀操作進行優(yōu)化
支持事務(用 Java api)
使用 Gremlin圖形遍歷語言
支持 Groovy腳本
支持在線備份,高級監(jiān)控及高可靠性支持使用 AGPL/商業(yè)許可
最佳應用場景:適用于圖形一類數(shù)據(jù)。這是 Neo4j與其他nosql數(shù)據(jù)庫的最顯著區(qū)別
例如:社會關系,公共交通網(wǎng)絡,地圖及網(wǎng)絡拓譜
7. Cassandra
所用語言: Java
特點:對大型表格和 Dynamo支持得最好
使用許可: Apache
協(xié)議: Custom, binary (節(jié)約型)
可調節(jié)的分發(fā)及復制(N, R, W)
支持以某個范圍的鍵值通過列查詢
類似大表格的功能:列,某個特性的列集合
寫操作比讀操作更快
基于 Apache分布式平臺盡可能地 Map/reduce
我承認對 Cassandra有偏見,一部分是因為它本身的臃腫和復雜性,也因為 Java的問題(配置,出現(xiàn)異常,等等)
最佳應用場景:當使用寫操作多過讀操作(記錄日志)如果每個系統(tǒng)組建都必須用 Java編寫(沒有人因為選用
Apache的軟件被解雇)
例如:銀行業(yè),金融業(yè)(雖然對于金融交易不是必須的,但這些產(chǎn)業(yè)對數(shù)據(jù)庫的要求會比它們更大)寫比讀更快,所以一個自然的特性就是實時數(shù)據(jù)分析
8. HBase
(配合 ghshephard使用)
所用語言: Java
特點:支持數(shù)十億行X上百萬列
使用許可: Apache
協(xié)議:HTTP/REST (支持 Thrift,見編注4)
在 BigTable之后建模
采用分布式架構 Map/reduce
對實時查詢進行優(yōu)化
高性能 Thrift網(wǎng)關
通過在server端掃描及過濾實現(xiàn)對查詢操作預判
支持 XML, Protobuf, 和binary的HTTP
Cascading, hive, and pig source and sink modules
基于 Jruby( JIRB)的shell
對配置改變和較小的升級都會重新回滾
不會出現(xiàn)單點故障
堪比MySQL的隨機訪問性能
最佳應用場景:適用于偏好BigTable:)并且需要對大數(shù)據(jù)進行隨機、實時訪問的場合。
例如: Facebook消息數(shù)據(jù)庫(更多通用的用例即將出現(xiàn))
編注4:Thrift
是一種接口定義語言,為多種其他語言提供定義和創(chuàng)建服務,由Facebook開發(fā)并開源。
當然,所有的系統(tǒng)都不只具有上面列出的這些特性。這里我僅僅根據(jù)自己的觀點列出一些我認為的重要特性。與此同時,技術進步是飛速的,所以上述的內容肯定需要不斷更新。我會盡我所能地更新這個列表。
PostgreSQL 是一種對象-關系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),也是目前功能最強大、
特性最豐富和最復雜的自由數(shù)據(jù)庫系統(tǒng)。它起源于伯克利(BSD)的數(shù)據(jù)庫研究計劃,
目前是最重要的開源數(shù)據(jù)庫產(chǎn)品開發(fā)項目之一, 有著非常廣泛的用戶。
PostgreSQL 可以說是最富特色的自由數(shù)據(jù)庫管理系統(tǒng),也有人認為可以是最強大的自由
數(shù)據(jù)庫管理系統(tǒng)。PostgreSQL 是唯一支持事務、子查詢、多版本并行控制系統(tǒng)、數(shù)據(jù)完
整性檢查等特性的唯一的一種自由的數(shù)據(jù)庫管理系統(tǒng)。
能在多下---包括Linux、FreeBSD和Windows等---運行,并且支持多語言的開發(fā)。
在兩大開源數(shù)據(jù)庫產(chǎn)品的對比中,一般認為MySQL速度更快,所以得到更為廣泛的使
用;而PostgreSQL性能更為先進,PostgreSQL 提供很多 MySQL 目前所不支持的特性,比
如觸發(fā)器、視圖、存儲過程等等,在記錄數(shù)超千萬之后性能表現(xiàn)尤其出色。
你可以每天創(chuàng)建一個表,查詢數(shù)據(jù)的時候用union all合并起來查詢
這樣做的好處是,刪除的時候可以直接把表刪掉即可
在企業(yè)級大數(shù)據(jù)平臺的建設中,從傳統(tǒng)關系型數(shù)據(jù)庫(如Oracle)向Hadoop平臺匯聚數(shù)據(jù)是一個重要的課題。目前主流的工具有Sqoop、DataX、Oracle GoldenGate for Big Data等幾種。Sqoop使用sql語句獲取關系型數(shù)據(jù)庫中的數(shù)據(jù)后,通過hadoop的MapReduce把數(shù)據(jù)從關系型數(shù)據(jù)庫中導入數(shù)據(jù)到HDFS,其通過指定遞增列或者根據(jù)時間戳達到增量導入的目的,從原理上來說是一種離線批量導入技術;DataX 直接在運行DataX的機器上進行數(shù)據(jù)的抽取及加載,其主要原理為:通過Reader插件讀取源數(shù)據(jù),Writer插件寫入數(shù)據(jù)到目標 ,使用Job來控制同步作業(yè),也是一種離線批量導入技術;Oracle Goldengate for Big Data抽取在線日志中的數(shù)據(jù)變化,轉換為GGS自定義的數(shù)據(jù)格式存放在本地隊列或遠端隊列中,并利用TCP/IP傳輸數(shù)據(jù)變化,集成數(shù)據(jù)壓縮,提供理論可達到9:1壓縮比的數(shù)據(jù)壓縮特性,它簡化了向常用大數(shù)據(jù)解決方案的實時數(shù)據(jù)交付,可以在不影響源系統(tǒng)性能的情況下將交易數(shù)據(jù)實時傳入大數(shù)據(jù)系統(tǒng)。對比以上工具及方法,結合數(shù)據(jù)處理的準確性及實時性要求,我們評估Oracle Goldengate for Big Data基本可以滿足當前大數(shù)據(jù)平臺數(shù)據(jù)抽取的需求。
1. 概述
cstore_fdw實現(xiàn)了 PostgreSQL 數(shù)據(jù)庫的列式存儲。列存儲非常適合用于數(shù)據(jù)分析的場景,數(shù)據(jù)分析的場景下數(shù)據(jù)是批量加載的。
這個擴展使用了Optimized Row Columnar (ORC)數(shù)據(jù)存儲格式,ORC改進了Facebook的RCFile格式,帶來如下好處:
壓縮:將內存和磁盤中數(shù)據(jù)大小削減到2到4倍??梢詳U展以支持不同壓縮算法。
列投影:只提取和查詢相關的列數(shù)據(jù)。提升IO敏感查詢的性能。
跳過索引:為行組存儲最大最小統(tǒng)計值,并利用它們跳過無關的行。
2. 使用
cstore_fdw的安裝和使用都非常簡單,可以參考官方資料。
thub.com/citusdata/cstore_fdw
注)注意cstore_fdw只支持PostgreSQL9.3和9.4 。
下面做幾個簡單的性能對比,看看cstore_fdw究竟能帶來多大的性能提升。
2.1 數(shù)據(jù)加載
2.1.1 普通表
CREATE TABLE tb1
(
id int,
c1 TEXT,
c2 TEXT,
c3 TEXT,
c4 TEXT,
c5 TEXT,
c6 TEXT,
c7 TEXT,
c8 TEXT,
c9 TEXT,
c10 TEXT
);
注:要和普通表的全表掃描作對比,所以不建主鍵和索引。
[postgres@node2 chenhj]$ time psql -p 40382 -At -F, -c "select id,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text,id::text from generate_series(1,10000000) id"|time psql -p 40382 -c "copy tb1 from STDIN with CSV"
COPY 10000000
1.56user 1.00system 6:42.39elapsed 0%CPU (0avgtext+0avgdata 7632maxresident)k
776inputs+0outputs (17major+918minor)pagefaults 0swaps
real 6m42.402s
user 0m15.174s
sys 0m14.904s
postgres=# select pg_total_relation_size('tb1'::regclass);
pg_total_relation_size
------------------------
1161093120
(1 row)
postgres=# \timing
Timing is on.
postgres=# analyze tb1;
ANALYZE
Time: 11985.070 ms
插入1千萬條記錄,數(shù)據(jù)占用存儲大小1.16G,插入耗時6分42秒,分析耗時12秒。
2.1.2 cstore表
$ mkdir -p /home/chenhj/data94/cstore
CREATE EXTENSION cstore_fdw;
CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw;
CREATE FOREIGN TABLE cstb1
(
id int,
c1 TEXT,
c2 TEXT,
c3 TEXT,
c4 TEXT,
c5 TEXT,
c6 TEXT,
c7 TEXT,
c8 TEXT,
c9 TEXT,
c10 TEXT
)
SERVER cstore_server
OPTIONS(filename '/home/chenhj/data94/cstore/cstb1.cstore',
compression 'pglz');
[postgres@node2 chenhj]$ time psql -p 40382 -At -F, -c "select id,id::text,id::text,id::text,id::text, id::text,id::text,id::text,id::text,id::text,id::text from generate_series(1,10000000) id"|time psql -p 40382 -c "copy cstb1 from STDIN with CSV"
COPY 10000000
1.53user 0.78system 7:35.15elapsed 0%CPU (0avgtext+0avgdata 7632maxresident)k
968inputs+0outputs (20major+920minor)pagefaults 0swaps
real 7m35.520s
user 0m14.809s
sys 0m14.170s
[postgres@node2 chenhj]$ ls -l /home/chenhj/data94/cstore/cstb1.cstore
-rw------- 1 postgres postgres 389583021 Jun 23 17:32 /home/chenhj/data94/cstore/cstb1.cstore
postgres=# \timing
Timing is on.
postgres=# analyze cstb1;
ANALYZE
Time: 5946.476 ms
插入1千萬條記錄,數(shù)據(jù)占用存儲大小390M,插入耗時7分35秒,分析耗時6秒。
使用cstore列存儲后,數(shù)據(jù)占用存儲大小降到普通表的3分之1。需要說明的是,由于所有TEXT列填充了隨機數(shù)據(jù),壓縮率不算高,某些實際的應用場景下壓縮效果會比這更好。
2.2 Text列的like查詢性能對比
2.2.1 普通表
清除文件系統(tǒng)緩存,并重啟PostgreSQL
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# free
total used free shared buffers cached
Mem: 2055508 771356 1284152 0 9900 452256
-/+ buffers/cache: 309200 1746308
Swap: 4128760 387624 3741136
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
[root@node2 ~]# free
total used free shared buffers cached
Mem: 2055508 326788 1728720 0 228 17636
-/+ buffers/cache: 308924 1746584
Swap: 4128760 381912 3746848
對Text列執(zhí)行l(wèi)ike查詢
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.42 0.00 95.40
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.55 330.68 212.08 7351441 4714848
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m7.051s
user 0m0.001s
sys 0m0.004s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.90 381.53 211.90 8489597 4714956
耗時7.1秒,產(chǎn)生IO讀1.14G,IO寫108K。
不清文件系統(tǒng)緩存,不重啟PostgreSQL,再執(zhí)行一次。消耗時間降到1.6秒,幾乎不產(chǎn)生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.81 332.20 213.06 7350301 4714364
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m1.601s
user 0m0.002s
sys 0m0.001s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.43 0.00 95.38
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.80 332.12 213.01 7350337 4714364
2.2.2 cstore表
清除文件系統(tǒng)緩存,并重啟PostgreSQL
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
對Text列執(zhí)行l(wèi)ike查詢
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.38 0.00 95.45
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.12 376.42 209.04 8492017 4716048
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from cstb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m2.786s
user 0m0.002s
sys 0m0.003s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.38 0.00 95.44
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 58.12 378.75 208.89 8550761 4716048
耗時2.8秒,產(chǎn)生IO讀59M,IO寫0K。執(zhí)行時間優(yōu)化的雖然不是太多,但IO大大減少,可見列投影起到了作用。
不清文件系統(tǒng)緩存,不重啟PostgreSQL,再執(zhí)行一次。消耗時間降到1.4秒,幾乎不產(chǎn)生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.36 0.00 95.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.75 376.33 207.58 8550809 4716524
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from cstb1 where c1 like '%66'"
count
--------
100000
(1 row)
real 0m1.424s
user 0m0.002s
sys 0m0.001s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.80 0.00 0.38 3.36 0.00 95.47
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.70 375.96 207.38 8550809 4716588
2.3 對Int列執(zhí)行=查詢
2.3.1 普通表
清除文件系統(tǒng)緩存,并重啟PostgreSQL后
[postgres@node2 chenhj]$ pg_ctl -D /home/chenhj/data94 -l logfile94 restart
[root@node2 ~]# echo 1 /proc/sys/vm/drop_caches
對Int列執(zhí)行=查詢
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.33 0.00 95.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.25 373.21 205.67 8560897 4717624
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where id =666666"
count
-------
1
(1 row)
real 0m6.844s
user 0m0.002s
sys 0m0.006s
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.34 0.00 95.49
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.60 422.57 205.54 9699161 4717708
耗時6.8秒,產(chǎn)生IO讀1.14G,IO寫84K
不清緩存,再執(zhí)行一次。消耗時間降到1.1秒,幾乎不產(chǎn)生IO。
[postgres@node2 chenhj]$ iostat -k dm-2
Linux 2.6.32-71.el6.x86_64 (node2) 06/23/14 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.79 0.00 0.37 3.33 0.00 95.50
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
dm-2 57.44 421.37 204.97 9699177 4718032
[postgres@node2 chenhj]$ time psql -p 40382 -c "select count(*) from tb1 where id =666666"
count
-------
網(wǎng)站標題:postgresql千萬的簡單介紹
標題網(wǎng)址:http://m.rwnh.cn/article2/dsdhpic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、App開發(fā)、微信公眾號、定制網(wǎng)站、自適應網(wǎng)站、虛擬主機
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)