在昨天我們測試partition key的時候,只要輸入的條件沒有完整包含partition key,就會看到以下的警示。
這是因為我們沒有正確的指定paritition key,Scylla無法判斷資料究竟位在哪個node的哪個位置,這句查詢就會變成full cluster scan。
Scylla預設是禁止這種查詢方式,如果一定要這樣查詢,就在語法後面加上ALLOW FILTERING字樣。
full cluster scan是非常沒有效率且耗效能的一種查詢,而當cluster是由多個node組成或者是大量的row,效能低落與查詢速度變慢的情形更是顯著。所以在下語法的時候,應該要盡量避免使用ALLOW FILTERING。
另外還有一種情形也會出現一樣的錯誤訊息,這次我們選擇用id當作PK,同時也是partition key。
查詢條件除了id再加上時間區間,發現一樣的錯誤警示出現了。
這是因為雖然我們可以透過partition key得知資料的存放位置,但是仍然需要用線性掃描來查詢整個partition裡頭的資料。一旦這個partition裡頭存放的row非常多,這樣的查詢也會造成效能低落。