2016-11-15 96 views
1

我有一個couchbase集羣設置(couchbase版本4.1),其中有N個數據節點,1個查詢節點和1個索引節點。數據節點在一個桶中有大約一百萬個關鍵值對。這整個設置在虛擬網絡中的Microsoft Azure中託管。並且可以向你保證,每個節點都有足夠的資源,RAM,CPU或磁盤不是問題。無法理解爲什麼N1QL查詢在couchbase中掛起?

現在我可以在我的couchbase服務器中獲取/設置JSON文件,而不會出現任何問題。我只是測試,所以端口不是問題,因爲我現在已經打開機器之間的所有端口。

但是,當我嘗試運行N1QL查詢(從couchbase外殼或使用python SDK)它不起作用。查詢只是掛起,我沒有從服務器得到任何答覆。另一方面,一段時間後,查詢只是沒有任何問題,然後一分鐘後又停止工作。

我已經在我的存儲桶和任何其他必需的全局二級索引(如果需要)上創建了PRIMARY索引。

我還安裝了由couchbase提供的樣本桶。同樣的問題存在。

有沒有人有線索是什麼問題?

+0

你能描述一下你想要做什麼嗎? 贊同,分享你的代碼,分享你的索引(不是主要的) –

+0

所以我把bucket命名爲'clients'。 'clients'中的每個JSON文檔都有一個名爲'transaction_successful'的布爾屬性。所以這是我做過什麼: '創建客戶主索引使用GSI' 然後我就嘗試運行: 'SELECT ID,電子郵件來自客戶端,其中transaction_successful =假LIMIT 100 OFFSET 200' 然後我不斷在循環中通過'limit'增加'offset'來獲取記錄。 –

+0

您可以查詢Couchbase示例存儲桶而沒有任何問題嗎? – geraldss

回答

0

您的查詢可能是因爲您服務器太緊張而死機,我不知道您每秒都會推送多少個N1QL操作,但對於這種類型的查詢,您將從中受益最多,並進行一些調整,從而降低cpu使用和提高效率。

  1. 創建一個特定的覆蓋索引,如:

    創建客戶指標inx_id_email(ID,電子郵件),其中transaction_successful =假

  2. 使用說明的關鍵字,如果您的查詢使用索引來檢查。 (explain SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200

我相信,你的查詢/索引節點被利用的太多,因爲你實際上在做相當於關係數據庫主要掃描。

+0

查詢和索引節點上的CPU和RAM使用率非常低。 (實際上沒有,因爲我只是測試)。我創建了GSI或任何必需的索引。解釋顯示查詢使用索引。奇怪的是,這個查詢偶爾會起作用,但大部分時間只是掛起。除CPU和RAM使用外,其餘均爲 –

+0

。您在索引下的服務器統計信息中看到了什麼? (在WebUI中) –