真人性做爰video網(wǎng)站公司網(wǎng)站建站要多少錢
目錄
- 1 問題
- 2 實(shí)現(xiàn)
1 問題
今天遇到的一個(gè)問題記錄一下,因?yàn)橄到y(tǒng)上的一個(gè)改動(dòng)需要同步腳本至測試庫上,具體的腳本內(nèi)容也很簡單,就是修改了某張表的一個(gè)字段。但是無論怎么操作都是一直卡住,表的數(shù)據(jù)量很小就十幾條數(shù)據(jù)所以初步懷疑是表被鎖了。后經(jīng)查證確實(shí)是被鎖住了。
2 實(shí)現(xiàn)
查詢表鎖SQL
select * from pg_locks where relation=
(select oid from pg_class where relname=‘可能鎖表了的表’);
1
2
經(jīng)過上述SQL查出來的記錄得知了該表確實(shí)存在鎖(導(dǎo)致鎖表的原因并未找到),由于是測試環(huán)境我這里為了省事并沒有看具體是哪個(gè)鎖導(dǎo)致的無法修改表結(jié)構(gòu)直接全部干掉,如果是生產(chǎn)環(huán)境還是建議排查下產(chǎn)生鎖的SQL和進(jìn)程等詳細(xì)信息,確定了解決方案開始一陣百度找到了pg_cancel_backend函數(shù),可以用來取消進(jìn)程的事務(wù)進(jìn)行回滾,但是事情并沒有迎刃而解,其中有一個(gè)鎖無論如何也關(guān)不掉。不用想了肯定是這個(gè)鎖導(dǎo)致的我無法修改表,于是翻閱了官方文檔找到了另一個(gè)相關(guān)的函數(shù)pg_terminate_backend,使用了這個(gè)函數(shù)之后上面那個(gè)“釘子戶”才終于被我干掉,然后發(fā)現(xiàn)表確實(shí)是可以修改了,完美解決。函數(shù)和對應(yīng)的作用寫在下方,具體的更多的使用大家可以參閱官網(wǎng)文檔。
取消函數(shù)和中斷函數(shù)
–取消后臺(tái)操作,回滾未提交事物
select pg_cancel_backend(上面查到的pid)
–中斷session,回滾未提交事物
select pg_terminate_backend(上面查到的pid)