不要一次看全部的資料

使用 PostgreSQL

今天想跟大家分享一個小地方,雖然看起來沒什麼,但只要在正式的機器上這樣用可能就會導致資料庫因此而出現崩壞。

如下圖要看資料表的資料時,建議都選擇有限制的觀看,例如看前100或後100筆的選項。

如果以動物animals資料表來舉例看前100筆,SQL 如下所示。

SELECT * FROM animals LIMIT 100

如果選擇上圖的 All Rows ,SQL語法如下

SELECT * FROM animals

為什麼?

說老實的在資料量很少的時候,根本沒有差別,但建議養成良好的習慣,看資料就看需要的量就好,之前在操作某張資料表時,該張資料表至少有2億以上的紀錄。

我習慣使用圖形化介面來看資料,一點下去 All Rows 真的完蛋了,為了要讀取這2億筆資料,我的網站無法在寫入東西,全部都卡在這個動作上,以PostgreSQL來說他會鎖住寫入的部分,但其他人還是可以正常讀取內容。

所以寫入全部卡住在排隊,就在等我的這兩億筆資料讀取完成,等讀取完以後,全部排隊寫入的資料再一次衝進來~

其他解法

參加資料庫聚會的時候有些前輩好像有提到(他們都是DBA),因為我是寫程式的那時候有些地方並不是很了解,但有印象好像可以設定資料庫處理交易的時間限制(例如:剛剛我跟資料庫要2億筆資料稱之為一個交易),超過設定值,假設30秒,就把該筆交易剔除,或許也是一個不錯的方法,下次有機會再來設定看看。

結語

但說老實的,真的沒有必要一次要那麼多資料,假設他可以在半小時領出來給你,但我想2億筆資料你一個月應該也看不完,看完或許前面的也忘記了!

目前謹記在我心的小技巧,看需要的資料就好,不要沒事看全部。

發佈留言