真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

postgresql壓測的簡單介紹

如何測試mysql的性能和穩(wěn)定性

 有一些有用的工具可以測試MySQL 和基于MySQL 的系統(tǒng)的性能。這里將演示如何利用這些工具進(jìn)行測試。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都做網(wǎng)站、彌勒網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、彌勒網(wǎng)絡(luò)營銷、彌勒企業(yè)策劃、彌勒品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供彌勒建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

mysqlslap

mysqlslap可以模擬服務(wù)器的負(fù)載,并輸出計時信息。它包含在MySQL 5.1 的發(fā)行包中,應(yīng)該在MySQL 4.1或者更新的版本中都可以使用。測試時可以執(zhí)行并發(fā)連接數(shù),并指定SQL 語句(可以在命令行上執(zhí)行,也可以把SQL 語句寫入到參數(shù)文件中)。如果沒有指定SQL 語句,mysqlslap 會自動生成查詢schema 的SELECT 語句。

MySQL Benchmark Suite (sql-bench)

在MySQL 的發(fā)行包中也提供了一款自己的基準(zhǔn)測試套件,可以用于在不同數(shù)據(jù)庫服務(wù)器上進(jìn)行比較測試。它是單線程的,主要用于測試服務(wù)器執(zhí)行查詢的速度。結(jié)果會顯示哪種類型的操作在服務(wù)器上執(zhí)行得更快。

這個測試套件的主要好處是包含了大量預(yù)定義的測試,容易使用,所以可以很輕松地用于比較不同存儲引擎或者不同配置的性能測試。其也可以用于高層次測試,比較兩個服務(wù)器的總體性能。當(dāng)然也可以只執(zhí)行預(yù)定義測試的子集(例如只測試UPDATE 的性能)。這些測試大部分是CPU 密集型的,但也有些短時間的測試需要大量的磁盤I/O 操作。

這個套件的最大缺點主要有:它是單用戶模式的,測試的數(shù)據(jù)集很小且用戶無法使用指定的數(shù)據(jù),并且同一個測試多次運行的結(jié)果可能會相差很大。因為是單線程且串行執(zhí)行的,所以無法測試多CPU 的能力,只能用于比較單CPU 服務(wù)器的性能差別。使用這個套件測試數(shù)據(jù)庫服務(wù)器還需要Perl 和BDB 的支持,相關(guān)文檔請參考.

Super Smack

Super Smack是一款用于MySQL 和PostgreSQL的基準(zhǔn)測試工具,可以提供壓力測試和負(fù)載生成。這是一個復(fù)雜而強大的工具,可以模擬多用戶訪問,可以加載測試數(shù)據(jù)到數(shù)據(jù)庫,并支持使用隨機數(shù)據(jù)填充測試表。測試定義在"smack"文件中,smack 文件使用一種簡單的語法定義測試的客戶端、表、查詢等測試要素。

Database Test Suite

Database Test Suite 是由開源軟件開發(fā)實驗室(OSDL,Open Source DevelopmentLabs)設(shè)計的,發(fā)布在SourceForge 網(wǎng)站上,這是一款類似某些工業(yè)標(biāo)準(zhǔn)測試的測試工具集,例如由事務(wù)處理性能委員會(TPC,Transaction Processing Performance Council)制定的各種標(biāo)準(zhǔn)。特別值得一提的是,其中的dbt2 就是一款免費的TPC-C OLTP 測試工具(未認(rèn)證)。之前本書作者經(jīng)常使用該工具,不過現(xiàn)在已經(jīng)使用自己研發(fā)的專用于MySQL 的測試工具替代了。

Percona's TPCC-MySQL Tool

我們開發(fā)了一個類似TPC-C 的基準(zhǔn)測試工具集,其中有部分是專門為MySQL 測試開發(fā)的。在評估大壓力下MySQL 的一些行為時,我們經(jīng)常會利用這個工具進(jìn)行測試(簡單的測試,一般會采用sysbench 替代),在源碼庫中有一個簡單的文檔說明。

sysbench

sysbench是一款多線程系統(tǒng)壓測工具。它可以根據(jù)影響數(shù)據(jù)庫服務(wù)器性能的各種因素來評估系統(tǒng)的性能。例如,可以用來測試文件I/O、操作系統(tǒng)調(diào)度器、內(nèi)存分配和傳輸速度、POSIX 線程,以及數(shù)據(jù)庫服務(wù)器等。sysbench 支持Lua 腳本語言,Lua 對于各種測試場景的設(shè)置可以非常靈活。sysbench 是我們非常喜歡的一種全能測試工具,支持MySQL、操作系統(tǒng)和硬件的硬件測試。(節(jié)選自《高性能MySQL》)

技術(shù)文檔 - PostgreSQL 性能優(yōu)化之 fsync 參數(shù)

目 錄

總 結(jié)

PostgreSQL 通過調(diào)用系統(tǒng) fsync() 或者其他使得事務(wù)內(nèi)容寫入到物理磁盤,這樣可以保證操作系統(tǒng)或者數(shù)據(jù)庫出現(xiàn)宕機后,仍然可以恢復(fù)到某一個一致性的狀態(tài)。理論上講 PostgreSQL 的 fsync 功能關(guān)閉,可以實現(xiàn)性能的提升,但是帶來的影響就是需要承擔(dān)數(shù)據(jù)的丟失,因為出現(xiàn)系統(tǒng)宕機或者數(shù)據(jù)庫崩潰的時候有一些數(shù)據(jù)是沒有落盤的。

本文將驗證 fsync 參數(shù)的性能影響,以及參數(shù)關(guān)閉時數(shù)據(jù)庫宕機后的影響。

數(shù)據(jù)量:1000W

fsync 參數(shù):on

初始化表:user_info

pgbench 壓測

pgbench 結(jié)果

pgbench 壓測

pgbench 結(jié)果

數(shù)據(jù)量:1000W

fsync 參數(shù):off

初始化表:user_info

pgbench 壓測

pgbench 結(jié)果

pgbench 壓測

pgbench 結(jié)果

通過對比發(fā)現(xiàn),將 fsync 改為 off,對于讀 TPS,參數(shù) fsync 的影響不大,對于寫 TPS,性能有一定提升。

現(xiàn)在驗證參數(shù)關(guān)閉時數(shù)據(jù)庫宕機后的影響

首先,使用將數(shù)據(jù)庫性能跑起來

然后,模擬服務(wù)器斷電

之后,啟動數(shù)據(jù)庫

提示信息:比致命錯誤還過分的錯誤。

結(jié)果:數(shù)據(jù)庫無法啟動,原因就是因為無法找到一個有效的 checkpoint 記錄,這就是因為 fsync 設(shè)置為 off,由于數(shù)據(jù)庫異常宕機導(dǎo)致??梢酝ㄟ^使用 pg_resetxlog 恢復(fù)數(shù)據(jù)庫,但是會造成部分?jǐn)?shù)據(jù)無法找回,數(shù)據(jù)丟失;也可以通過備份恢復(fù),同樣也會丟失部分?jǐn)?shù)據(jù)。

fsync 參數(shù)對于讀 TPS 的性能影響不大,對于寫 TPS 的性能有一些影響,設(shè)置為 off,寫 TPS 性能有一定提升,但是存在數(shù)據(jù)庫宕機后無法正常啟動,即使恢復(fù)后啟動數(shù)據(jù)庫,也會有數(shù)據(jù)丟失的很大風(fēng)險。因此生產(chǎn)環(huán)境非必要時,不要將此參數(shù)設(shè)置為 off,還是使用默認(rèn)的 on 比較穩(wěn)妥。

PostgreSQL 中 sequence 的用法

sequence 是 pg 自帶的高效的自增id工具(也叫序列)。sequence 使用了輕量級鎖的方式來做到高效自增id的,所以會比 UPDATE 行鎖快。sequence 的返回數(shù)據(jù)類型默認(rèn)是64位的整數(shù),pg 10 可以自定 smallint, integer 或者是 bigint。

sequence 是可以保證自增數(shù)據(jù)不重復(fù)的,也就是說每次自增后都會持久化保存,那么為了繼續(xù)提高性能,可以加上 CACHE 參數(shù)(默認(rèn)為1),每個進(jìn)程(連接)可以緩存一個子序列在當(dāng)前進(jìn)程內(nèi)存里面,當(dāng)子序列用完了才會去原序列取新的子序列。

這個用個例子簡單說一下,創(chuàng)建 sequence temp_seq3 時用了 CACHE 10,A session 可以獲取到的值是 1...10,B session 可以獲取到的值是 11...20,那么獲取順序可能是 (A, A, B, A),返回值是 (1, 2, 11, 3),這個不是嚴(yán)格自增的序列,但可以保證回次返回都是唯一的,用了 CYCLE 參數(shù)的除外。

根據(jù)文檔和源碼( link 第80行),緩存在內(nèi)存里面的最大值(cached)是每個進(jìn)程都不一樣的,所以如果要求嚴(yán)格自增的服務(wù)不能用 CACHE。

這里寫三種用 pg 做自增id的方式

測試命令,在 MacOS 上用 docker 開一個 pg 在里面運行一下 pgbench 腳本,其中 sql.sql 的內(nèi)容替換成對應(yīng)的壓測腳本。

TPS: 986

TPS: 7332

TPS: 7451

看看微信的分布式id生成器,原理都差不多,"實際應(yīng)用中每次提升的步長為10000" = "CACHE 10000"。 link

以上優(yōu)化已經(jīng)是用在友好速搭電商系統(tǒng)的訂單號和優(yōu)惠券號生成服務(wù)中,為商家提供更快更可靠的服務(wù)。


本文名稱:postgresql壓測的簡單介紹
網(wǎng)頁URL:http://weahome.cn/article/dsdhshd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部