DB2中的SMS和DMS

在DB2中表空間的存儲方式有兩種,SMS(System Managed Space)和DMS(Database Managed Space)。


SMS直接利用操作系統的文件系統來管理數據。表空間中的數據按照系統中所有容器上進行數據塊劃分。表空間中的所有的表都被賦予了它自己的文件名,此文件名在所有的容器中使用。文件擴展名指示出該文件中存儲的數據類型。


DMS是由數據庫進行表空間的存儲空間控制。當定義DMS表空間時,需要選擇設備或者文件列表,使其屬於該表空間。


DMS表空間和SMS表空間之間的主要差別在於,對於DMS的表空間,存儲空間是在創建表空間時分配的,而不是在需要時在向操作系統申請的。並且,在這兩種類型的表空間上,數據的放置也是有一些不同之處。例如:考慮進行高效率的表掃描時,數據塊在物理上連續存放是很重要的。對於SMS來說,操作系統的文件系統將決定每個邏輯文件頁面的物理存儲位置。根據文件系統上其他活動的級別以及用來確定存放位置的算法不同,這些邏輯連續的頁面可能會連續存放,也可能不連續分配。對於DMS,由於是數據庫管理程序直接與磁盤打交道,所以它在理論上可能保證頁面在物理上連續存放。


但是,應該注意的是,當使用DMS表空間時,有兩個容器選項:原始設備(raw)和文件(file)。當使用文件選項時,數據庫管理程序在創建表空間時向文件系統申請分配整個容器。由於是從文件系統分配得來,導致物理分配通常(但也不保證)是連續的。當使用原始設備容器時,數據庫管理程序直接控制整個設備,並總能確保數據塊中的頁連續分配。


SMS和DMS表空間相比,SMS表空間特別適合一般用途。SMS表空間能夠提供一定的性能,且管理成本很低。如果需要達到最佳的性能,則應該選用DMS表空間。因爲使用文件容器或者SMS表空間移動數據時會發生雙重緩衝(在數據庫管理程序級首先緩衝一次數據,然後在文件系統再緩衝一次數據,這就是雙重緩衝),所以使用設備容器可能提供更好的性能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章