下面演示下:一 方法一:通過 pg_user 視圖查詢--1.1 設(shè)置用戶的 log_statement 參數(shù) postgres=# alter role francs set log_statement="all";ALTER ROLE --1.2 驗證 postgres=# select * From pg_user where usename='francs';-[ RECORD 1 ]--------------------usename | francsusesysid | 24920usecreatedb | fusesuper | fusecatupd | fuserepl | fpasswd | ********valuntil | useconfig | {log_statement=all}--1.3 設(shè)置用戶的 maintenance_work_mem 參數(shù) postgres=# alter role francs set maintenance_work_mem="1GB";ALTER ROLE--1.4 再次驗證 postgres=# select * From pg_user where usename='francs';-[ RECORD 1 ]---------------------------------------------usename | francsusesysid | 24920usecreatedb | fusesuper | fusecatupd | fuserepl | fpasswd | ********valuntil | useconfig | {log_statement=all,maintenance_work_mem=1GB} 備注:上面是通過 pg_user.useconfig 查詢。二 方法二: 通過 pg_db_role_setting catalog 基表查詢--2.1 pg_db_role_setting 表結(jié)構(gòu) Table "pg_catalog.pg_db_role_setting" Column | Type | Modifiers -------------+--------+----------- setdatabase | oid | not null setrole | oid | not null setconfig | text[] | Indexes: "pg_db_role_setting_databaseid_rol_index" UNIQUE, btree (setdatabase, setrole), tablespace "pg_global"備注:可見 pg_db_role_setting 會針對數(shù)據(jù)庫,用戶級別進行記錄。--2.2 驗證 postgres=# select oid,rolname from pg_authid where rolname='francs'; oid | rolname -------+--------- 24920 | francs(1 row)postgres=# select * From pg_db_role_setting where setrole=24920; setdatabase | setrole | setconfig -------------+---------+---------------------------------------------- 0 | 24920 | {log_statement=all,maintenance_work_mem=1GB}備注:因為之前的設(shè)置只針對用戶 francs 設(shè)置,而沒指定相應(yīng)的數(shù)據(jù)庫,所以 setdatabase 值為 0。 接著往下看。
科爾沁右翼中網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),科爾沁右翼中網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為科爾沁右翼中數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的科爾沁右翼中做網(wǎng)站的公司定做!
目 錄
總 結(jié)
PostgreSQL 通過調(diào)用系統(tǒng) fsync() 或者其他使得事務(wù)內(nèi)容寫入到物理磁盤,這樣可以保證操作系統(tǒng)或者數(shù)據(jù)庫出現(xiàn)宕機后,仍然可以恢復到某一個一致性的狀態(tài)。理論上講 PostgreSQL 的 fsync 功能關(guān)閉,可以實現(xià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ù)庫異常宕機導致??梢酝ㄟ^使用 pg_resetxlog 恢復數(shù)據(jù)庫,但是會造成部分數(shù)據(jù)無法找回,數(shù)據(jù)丟失;也可以通過備份恢復,同樣也會丟失部分數(shù)據(jù)。
fsync 參數(shù)對于讀 TPS 的性能影響不大,對于寫 TPS 的性能有一些影響,設(shè)置為 off,寫 TPS 性能有一定提升,但是存在數(shù)據(jù)庫宕機后無法正常啟動,即使恢復后啟動數(shù)據(jù)庫,也會有數(shù)據(jù)丟失的很大風險。因此生產(chǎn)環(huán)境非必要時,不要將此參數(shù)設(shè)置為 off,還是使用默認的 on 比較穩(wěn)妥。
通過參數(shù)文件查看,一般是在$PGDATA/postgresql.conf文件里
或者在系統(tǒng)中查看,如
postgres=# show shared_buffers;
shared_buffers
----------------
4GB
(1 row)
--查看所有參數(shù)
postgres=# show all;
文章題目:包含postgresql參數(shù)的詞條
分享網(wǎng)址:http://www.rwnh.cn/article0/dscopoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站導航、品牌網(wǎng)站制作、網(wǎng)站維護、定制網(wǎng)站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)