MongoDB 建立索引導致鎖庫
MongoDB 建立索引導致鎖庫
- 背景描述
兩千多萬資料,204G 的資料建立索引,執行 db.collection.ensureIndex({key:1}) 之後,是要鎖庫的,開啟另一個終端,任何操作都不能執行。
- 根本原因
在資料庫建立索引時,預設時 “foreground” 也就是前臺建立索引,但是,當你的資料庫資料量很大時,在建立索引的時會讀取資料檔案,大量的檔案讀寫會阻止其他的操作,命令沒有顯性指定 background,所以命令會鎖庫。
- 解決方案
執行 db.collection.ensureIndex({key:1},{background: true}),這樣就不會鎖庫了,建立索引就會在後臺處理了。(注:“{key:1}” 中,1 表示升序 - asc,-1 表示降序 - desc )
在後臺建立索引的時候,不能對建立索引的 collection 進行一些壞滅型的操作,如:執行 repairDatabase,drop,compat,當你在建立索引的時候執行這些操作的會報錯。
相關推薦
MongoDB 建立索引導致鎖庫
MongoDB 建立索引導致鎖庫 背景描述 兩千多萬資料,204G 的資料建立索引,執行 db.collection.ensureIndex({key:1}) 之後,是要鎖庫的,開啟另一個終端,任何操作都不能執行。 根本原因 在資料庫建立索引時
MongoDB加索引導致鎖庫的問題記錄
1、問題描述 執行以下語句時,導致其他對MongoDB的請求無法被相應,線上應用程式報錯。 db.getCollection('***').ensureIndex({key:1}) 2、原因分析 MongoDB建索引時,預設前臺操作,原因是為了儘可能快的建立索引,在
MongoDB 索引的建立注意事項、以及建索引導致鎖庫的解決方案
MongoDB索引的建立注意事項 在資料量超大的情形下,
mongodb 建索引導致資料庫阻塞
在MongoDB上建索引可能會對MongoDB叢集對可用性產生負面影響。在生產服務上,如果針對一個大集合觸發建立索引,且在前臺執行,你可能會發現,在索引建完之前,整個叢集都無影響。在一個大集合上,這個過程可能會持續幾個小時,甚至幾天。 解決的方法很簡單,MongoDB 提供了兩種建索引的訪問,一
MongoDB 建立索引的語法
1.為普通欄位新增索引,並且為索引命名 db.集合名.createIndex( {"欄位名": 1 },{"name":'idx_欄位名'}) 說明: (1)索引命名規範:idx_<構成索引的欄位名>。如果欄位名字過長,可採用欄位縮寫。
Mongodb 建立索引並利用索引進行排序
python課上需要實現對經度和緯度進行排序,並篩選資料。 由於給出的資料很大,有1200W吧,而mongodb只能支援32MB的排序。。。 上網上搜了一下,決定建立索引,建立完索引之後就直接對資料進行排序了。 這裡貼一下實驗的資料型別: 這裡用的pyhton連線mongdb建
mongodb建立索引及索引優化效率案例
查詢監控結果 監控結果儲存在一個特殊的蓋子集合system.profile裡,這個集合分配了128kb的空間,要確保監控分 析資料不會消耗太多的系統性資源;蓋子集合維護了自然的插入順序,可以使用KaTeX parse error: Expected '}', got 'EOF' at end of input
關於mongodb建立索引的一些經驗總結
想來接觸mongodb已經快一年了,對於它的索引知識也積攢了不少經驗,趁著這個月黑風高的夜晚,就把mongodb的索引總結一番吧。 一,索引介紹 mongodb具有兩類索引,分別為單鍵索引和複合索引。 1.單鍵索引是最簡單的一種索引,建立單鍵索引的開
mongodb建立索引
一、索引 MongoDB 提供了多樣性的索引支援,索引資訊被儲存在system.indexes 中,且預設總是為_id建立索引,它的索引使用基本和MySQL 等關係型資料庫一樣。其實可以這樣說說,索引是凌駕於資料儲存系統之上的另一層系統,所以各種結構迥異的儲存都有相同或相似的索引實現及使用介面並不足為 奇
python mongodb 建立庫與建立索引
初始話連結 import pymongo import datetime #mongodbUrl = 'mongodb://test:[email protected]:27018,192.168.1.3:27018,192.168.1.3:27018' mongodbU
mysql-不恰當的update語句使用主鍵和索引導致mysql死鎖
行修改 sql錯誤 狀態 還要 錯誤日誌 示意圖 http 概率 最小 背景知識:MySQL有三種鎖的級別:頁級、表級、行級。 MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level l
數據庫、數據表建立索引的原則
order by 復合 數據表 修改 sql 在那 字段 以及 設計 數據庫建立索引的原則 1,確定針對該表的操作是大量的查詢操作還是大量的增刪改操作。 2,嘗試建立索引來幫助特定的查詢。檢查自己的sql語句,為那些頻繁在where子句中出現的字段建立索引。 3,嘗試建立復
為mysql數據庫建立索引
必須 說明 這不 _id 查詢 常用類 沒有 存儲 影響 前些時候,一位頗高級的程序員居然問我什麽叫做索引,令我感到十分的驚奇,我想這絕不會是滄海一粟,因為有成千上萬的開發者(可能大部分是使用MySQL的)都沒有受過有關數據庫的正規培訓,盡管他們都為客戶做過一些開發,但卻對
數據庫的數據類型、索引、鎖、事務和視圖
ima -m log_file oat 寬度 默認值 col 說明 prim 數據庫的數據類型、索引、鎖、事務和視圖 數據的類型 1)數據類型: 數據長什麽樣? 數據需要多少空間來存放? 系統內置數據類型和用戶定義數據類型 2)MySql 支持多種列
數據庫索引(二)聚集/非聚集索引,索引和鎖
mysql聚集索引(InnoDB,使用B+Tree作為索引結構)在一個結構中保存了b-tree索引和數據行;按照主鍵的順序存儲在葉子頁上;主鍵索引:葉節點存儲(主鍵數據:所有剩余列數據)二級索引(非聚簇索引):葉節點存儲(索引列數據:主鍵數據)非葉節點只存儲 索引列優點:可以把相關數據保存在一起,如根據用戶i
mysql數據庫優化之 如何選擇合適的列建立索引
索引 taf order 誰的 bsp 選擇 spa mysql 查詢 1. 在where 從句,group by 從句,order by 從句,on 從句中出現的列; 2. 索引字段越小越好; 3. 離散度大的列放到聯合索引的前面;比如: select * fro
pycharm每次新建專案都會建立虛擬環境問題,導致很多庫安裝後無法匯入
最近因為工作上的需要,琢磨了一下python,裝了pycharm這個號稱史上最好的編輯器,還沒開始玩,就被整崩潰了。 因為我是剛開始玩這個,寫了很多hello world,所以新建專案的時候很多,不知道從啥時候開始,我每次新建專案,都會這樣:
Atitit lucence 使用總結 目錄 1. 基本概念 1 1.1. Index:索引庫,文件的集合組成索引。 1 2. 建立索引 2 2.1. Api查詢 2 2.2. Dsl查詢 3
Atitit lucence 使用總結 目錄 1. 基本概念 1 1.1. Index:索引庫,文件的集合組成索引。 1 2. 建立索引 2 2.1. Api查詢 2 2.2. Dsl查詢 3 Merge
ElasticSearch學習(一)------建立索引庫,設定索引規則
一、建立索引庫,並且設定預設分詞器為 IK curl -XPUT http://localhost:9200/myindex -d ' { "settings" : { "index" : { "max_result_window" : 10000
MongoDB效能篇 -建立索引,組合索引,唯一索引,刪除索引和explain執行計劃
一、索引 MongoDB 提供了多樣性的索引支援,索引資訊被儲存在system.indexes 中,且預設總是為_id建立索引,它的索引使用基本和MySQL 等關係型資料庫一樣。其實可以這樣說說,索引是凌駕於資料儲存系統之上的另一層系統,所以各種結構迥異的儲存都有相同或