記憶體是否被Ad-hoc Query佔滿呢?

記憶體是否被Ad-hoc Query佔滿呢? 資料庫為了存取更有效率,會把每一次 query 執行結果(data) 與該Query 儲存在記憶體中, 如果下次有同樣的query 或是資料存取,就可以直接由記憶體中存取不需要到磁碟讀取 如此一來,就可以大幅減少 Disk I/O 的存取時間 但是問題來了,如果有很多的 Query 都是一次性的查詢(Ad-hoc Query)呢? 這樣一次性這樣的查詢不會重複被使用, 因此會讓記憶體存放許多這樣一次性查詢的 ad-hoc…

Read More

如何知道 Index 的使用效率呢?

如何知道 Index 的使用效率呢? 這篇文章主要介紹一個簡單的技巧來得知 index 的使用效率, 我們可能因為希望查詢更有效率的原因,建立許多的 non-Clustered Index 隨著時間的經過,資料的更新等,慢慢 SQL Database 會建立統計資訊 告訴我們該索引是否有被使用,如果沒有用到的索引除了會額外占空間之外, 隨著資料的更新,SQL Server 還必須額外的更新索引的資訊內容也耗費額外的 I/O. 因此,如何知道那些索引在上線後,完全沒有被使用就是這篇要介紹的技巧。  …

Read More

SQL Injection 基本原理與保護

SQL Injection 基本原理與保護 由於每個網站背後都會有 Database 存放資料, 這篇文章主要介紹SQL Injection 的形成原因、如何避免、 SQL injection 所帶來的資訊安全風險與建議。   通常來說,網站或是雲端服務會利用資料庫來存放下列資料 使用者資料、帳號 商品資訊、訂單 其他相關商業邏輯與權限 由於 SQL是直譯式的語言, 因此如果網站的使用者輸入與後端資料庫沒有適當的安全防護,…

Read More