千家信息网

怎么使用PostgreSQL中的lightweight locks.

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍"怎么使用PostgreSQL中的lightweight locks.",在日常操作中,相信很多人在怎么使用PostgreSQL中的lightweight locks.问题上存在疑惑,
千家信息网最后更新 2025年02月02日怎么使用PostgreSQL中的lightweight locks.

这篇文章主要介绍"怎么使用PostgreSQL中的lightweight locks.",在日常操作中,相信很多人在怎么使用PostgreSQL中的lightweight locks.问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用PostgreSQL中的lightweight locks."的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

简介
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            | 16384datname          | testdbpid              | 5914usesysid         | 10usename          | pg12application_name | psqlclient_addr      | client_hostname  | client_port      | -1backend_start    | 2019-08-22 11:40:58.504462+08xact_start       | 2019-08-22 12:16:02.528978+08query_start      | 2019-08-22 12:16:04.372427+08state_change     | 2019-08-22 12:16:04.374888+08wait_event_type  | Clientwait_event       | ClientReadstate            | idle in transactionbackend_xid      | 716backend_xmin     | query            | delete from t_prewarm where id = 1;backend_type     | client backendTime: 14.262 ms[local]:5432 pg12@testdb=# select * from  pg_stat_activity where pid = 5964;-[ RECORD 1 ]----+------------------------------------------------datid            | 16384datname          | testdbpid              | 5964usesysid         | 10usename          | pg12application_name | psqlclient_addr      | client_hostname  | client_port      | -1backend_start    | 2019-08-22 11:41:10.420664+08xact_start       | 2019-08-22 12:16:11.812598+08query_start      | 2019-08-22 12:16:18.718567+08state_change     | 2019-08-22 12:16:18.718572+08wait_event_type  | Lockwait_event       | transactionidstate            | activebackend_xid      | backend_xmin     | 716query            | select * from t_prewarm where id = 1 for share;backend_type     | client backendTime: 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."的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

结构 学习 系统 缓存 区域 大小 数据 更多 级别 视图 保护 帮助 实用 最低 较大 重要 频繁 接下来 事件 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据储存软件开发 福建服务器租用平台 世界互联网大会上的前沿新科技 高级网络技术设计图 网络技术中心部是干嘛的 空间数据库的历史现状与发展趋势 如何解决服务器磁盘爆满 县直单位网络安全工作存在的问题 计算机网络技术的就业与薪资 人脸识别参考数据库 麻将游戏软件开发多少钱 php服务器编程 区局做好网络安全 软件开发项目助理职责 网购商城数据库设计 100字网络安全小建议 手机通过ip进入服务器 翼和沃南京网络技术有限公司 三级网络技术考哪一本书 如何看首选服务器和备用服务器 小学网络安全宣传周手抄报 世界互联网大会上的前沿新科技 异常行为分析 数据库 达梦数据库帐户锁定 财务软件开发工程师 纵横天下网络技术有限公司 互联网和科技基金 性价比高的网络安全型号 汉南区快手翻译服务器连接超时 计算机网络技术软考
0