久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么使用PostgreSQL中的lightweight locks.

153次閱讀
沒有評論

共計 2396 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要介紹“怎么使用 PostgreSQL 中的 lightweight locks.”,在日常操作中,相信很多人在怎么使用 PostgreSQL 中的 lightweight locks. 問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用 PostgreSQL 中的 lightweight locks.”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

簡介
PG 中的 lightweight locks(LWLocks, 在其他數據庫稱為 Latchs) 輕量級鎖用于控制內存訪問, 只有兩種級別的鎖:shared 和 exclusive.
通過系統視圖 pg_stat_activity 可查看關于 Lock/Wait 的相關信息

[local]:5432 pg12@testdb=# select * from pg_stat_activity where pid = 5914;
-[ RECORD 1 ]----+------------------------------------
datid | 16384
datname | testdb
pid | 5914
usesysid | 10
usename | pg12
application_name | psql
client_addr | 
client_hostname | 
client_port | -1
backend_start | 2019-08-22 11:40:58.504462+08
xact_start | 2019-08-22 12:16:02.528978+08
query_start | 2019-08-22 12:16:04.372427+08
state_change | 2019-08-22 12:16:04.374888+08
wait_event_type | Client
wait_event | ClientRead
state | idle in transaction
backend_xid | 716
backend_xmin | 
query | delete from t_prewarm where id = 1;
backend_type | client backend
Time: 14.262 ms
[local]:5432 pg12@testdb=# select * from pg_stat_activity where pid = 5964;
-[ RECORD 1 ]----+------------------------------------------------
datid | 16384
datname | testdb
pid | 5964
usesysid | 10
usename | pg12
application_name | psql
client_addr | 
client_hostname | 
client_port | -1
backend_start | 2019-08-22 11:41:10.420664+08
xact_start | 2019-08-22 12:16:11.812598+08
query_start | 2019-08-22 12:16:18.718567+08
state_change | 2019-08-22 12:16:18.718572+08
wait_event_type | Lock
wait_event | transactionid
state | active
backend_xid | 
backend_xmin | 716
query | select * from t_prewarm where id = 1 for share;
backend_type | client backend
Time: 4.655 ms

LWLock 類型
WALInsertLock: 保護 WAL buffers. 可以增加 WAL buffers 來改善爭用. 設置 synchronous_commit=off 和 full_page_writes=off 可減少爭用, 但不建議這樣做.
WALWriteLock:WAL Record 刷盤或 WAL segment 切換時使用該鎖保護.synchronous_commit=off 可清除刷盤等待.full_page_writes=off 可減少刷盤數據大小.
LockMgrLock: 在只讀工作負載下會出現在等待事件中. 不論大小, 都會鎖定 relations. 該 Lock 不是單個鎖, 而是至少 16 個分區. 因此, 在基準測試時使用多個表顯得很重要.
ProcArrayLock: 包含 ProcArray 結構體.
CLogControlLock: 包含 CLogControl 結構體, 如果在 pg_stat_activity 中頻繁出現, 那應檢查 $PGDATA/pg_clog(PG11+:pg_xact) 目錄, 應位于已緩存的文件系統上.
SInvalidReadLock: 包含 sinval 結構體.Readers 使用共享鎖, 而 SICleanupQueue 和其他數組范圍內的更新則請求獨占鎖. 如果共享緩存存在較大的壓力, 拿在系統視圖上可看到該結構體的出現, 增大 shared_buffers 可減少爭用.
BufMappingLocks: 包含 buffers 的區域.PG 設置了 128 個 buffer 區域用于管理整個緩存.

Spinlocks
最低級別的鎖是自旋鎖, 使用與 CPU 特定的機制實現.

到此,關于“怎么使用 PostgreSQL 中的 lightweight locks.”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-26發表,共計2396字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 岐山县| 沧州市| 建瓯市| 沂水县| 盐池县| 布拖县| 白水县| 蒲城县| 抚州市| 五家渠市| 射洪县| 高邮市| 改则县| 涡阳县| 枣阳市| 军事| 横峰县| 鲁甸县| 孟连| 三江| 沙河市| 玉溪市| 雅安市| 太保市| 天祝| 扎赉特旗| 齐河县| 苍溪县| 新野县| 双流县| 响水县| 兴山县| 彭泽县| 闻喜县| 东丰县| 边坝县| 西昌市| 沙河市| 惠州市| 娄烦县| 罗定市|