成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PostgreSQL建立索引如何避免寫數據鎖定

數據庫 其他數據庫 PostgreSQL
寫這篇blog源自一個帥哥在建索引發生了表鎖的問題。正常情況下Postgresql建立普通btree索引時會阻塞DML(insert,update,delete)操作,直到索引完成,期間讀操作不受阻塞。

寫這篇blog源自一個帥哥在建索引發生了表鎖的問題。先介紹一下Postgresql的建索引語法:

Version:9.1

  1. CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ]  
  2.     ( { column | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )  
  3.     [ WITH ( storage_parameter = value [, ... ] ) ]  
  4.     [ TABLESPACE tablespace ]  
  5.     [ WHERE predicate ] 

這里不解釋語法的諸多參數使用(排序,使用方法,填充因子等),主要說一下concurrently的使用場景。

正常情況下Postgresql建立普通btree索引時會阻塞DML(insert,update,delete)操作,直到索引完成,期間讀操作不受阻塞。當只有一個用戶操作這當然沒問題,但是在生產環境,并發比較高的情況下,特別是大表建索引就不能這么操作了,不然用戶要跳起來罵娘了,點個按鈕一天還沒反應過來。

--使用

Postgresql提供了一個參數,可以在線建立索引的時候避免因寫數據而鎖表,這個參數叫concurrently。使用很簡單,就是用create index concurrently來代替create index即可。

--副作用

當然了,使用這個參數是有副作用的,不使用這個參數建索引時DB只掃描一次表,使用這個參數時,會引發DB掃兩次表,同時等待所有潛在會讀到該索引的事務結束,這么一來,系統的CPU和IO,內存等會受一點影響,所以綜合考慮,仍然讓用戶自行選擇,而不是默認。

--失敗

在使用concurrently參數建索引時,有可能會遇到失敗的情況,比如建唯一索引索引發現數據有重復,又或者用戶發現建索引時建錯字段的,取消建索引操作了。此時該表上會存在一個索引,這是因為帶這個參數的建索引命令一經發出,就首先會在系統的日志表里先插一個索引記錄進去,又因為這個索引最終建失敗了,所以會被標記一個INVALID的狀態,如下:

  1. postgres=# \d t_kenyon  
  2.        Table "public.t_kenyon" 
  3.  Column |  Type   | Modifiers   
  4. --------+---------+-----------  
  5.  col    | integer |   
  6. Indexes:  
  7.     "idx" btree (col) INVALID 

--重建

遇到上述失效的索引重建時兩個辦法,一個是drop index index_name,然后再執行create index concurrently。還有一個是執行reindex index_name命令,但是后者不支持concurrent參數。

--總結

在生產上執行創建索引命令時最好帶上此參數,因為多消耗一點系統資源和時間來換取用戶的不間斷訪問更新是相對值得的。 如果是索引重建,可以再在原基礎上建立一個不同名的相同索引,然后取消老的索引。

英文原文: http://www.postgresql.org/docs/9.1/static/sql-createindex.html

譯文鏈接:http://my.oschina.net/Kenyon/blog/93465

責任編輯:林師授 來源: OsChina
相關推薦

2015-09-14 10:03:23

云鎖定網絡服務云供應商

2021-05-21 10:50:39

云計算供應商鎖定云遷移

2024-03-01 09:57:19

數據庫檢索項目

2022-10-12 13:33:25

PostgreSQL數據庫

2013-07-16 09:38:01

廠商鎖定 云廠商鎖定開放APISaaS廠商

2014-10-15 10:01:12

2018-04-17 12:23:37

多云云計算供應商

2013-04-11 09:21:46

PaaS平臺即服務PaaS產品

2011-09-05 10:01:41

虛擬化

2021-04-22 11:22:12

云計算數據遷移混合云

2024-07-08 10:48:51

2011-05-18 13:16:21

MySQL數據庫鎖定

2017-10-24 14:48:05

數據數據驅動文化大數據

2023-09-14 23:05:57

? ?MySQL數據庫

2011-04-11 16:50:13

Oracle數據庫索引

2010-11-29 10:22:46

Sybase建立索引

2012-05-07 15:32:46

Erlang

2019-10-12 09:58:53

云計算IT服務云計算提供商

2023-03-27 09:57:00

PostgreSQL并發索引

2010-05-24 14:57:03

MySQL數據庫表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区三区精品视频 | 日日草夜夜草 | 国产精品123区 | 亚洲欧美一区二区三区国产精品 | 在线观看中文字幕视频 | 九色在线观看 | 中文字字幕一区二区三区四区五区 | 99re在线| 日韩av看片 | 国产成人久久av免费高清密臂 | 99久久婷婷国产综合精品首页 | 久久久日韩精品一区二区三区 | 狠狠的日| 久久久久久久国产精品视频 | 日韩在线小视频 | 国产精品久久一区二区三区 | 91视视频在线观看入口直接观看 | 中文字幕在线观看视频一区 | 福利视频亚洲 | 欧洲亚洲一区 | www.色婷婷 | 亚洲精品乱码久久久久久按摩 | 国产精品视频一二三 | 在线成人一区 | 亚洲精品一二三区 | 免费一区 | 国产精品特级毛片一区二区三区 | 美女福利视频网站 | 日韩av在线一区二区 | 精品1区2区3区4区 | 伊人二区 | 午夜爱爱毛片xxxx视频免费看 | 精品欧美一区二区三区久久久 | 精品成人免费一区二区在线播放 | 国产精品久久久久久久久婷婷 | 欧美伊人影院 | 亚洲一区二区三区在线免费 | 操久久 | 国产不卡视频在线 | 狠狠草视频 | 国产成人综合一区二区三区 |