隨著大資料的日益發展,國產資料資料庫已在分析型資料平臺上應用越來越多,特別是天津南大通用的gbase 8a資料庫,據了解,全國大部分中國移動經分倉庫均已在不同業務部署應用,且已在多個省份獲得多次擴容高度認可。然而隨著支撐的業務增加,使用程序中,我們發現,表數量達到一定程度后,大批量查詢tables表和views等系統表,出現查詢效率低下情況,這是為什么呢?
據官方工程師介紹,因為這幾個表屬于虛表,也就是不存在的表。當你批量查詢時,系統才會掃描元檔案獲取相應的資訊組成結果集,掃描程序中極大消耗IO和記憶體。假如表數量達到40萬以上,不加任何過濾條件,基本無法查詢出來。為了解決這個問題,gbase官方推出了一個物理系統表:gbase.table_distribution,該表和普通物理表一樣,記錄了所有的表名等資訊,可一次性查詢出庫中所有的表資訊。但是細心者發現,該表只是記錄表資訊,沒有記錄視圖。如果我要查詢庫中所有視圖清單,views又無法批量查詢時,我們怎么辦呢?
筆者深入研究后,還真找到了辦法。不過此辦法只能DBA后臺實作。方法是,在一個管理節點的gcluster/metadata下,會記錄所有的物件檔案,每個物件都有一個frm檔案。通過find找出過濾出所有物件的名字后,再通過gbase.table_distribution系統表獲取所有表清單,通過comm命令對兩個清單檔案排除表的名字,即可獲取到當前庫中所有的視圖清單。這方法本人驗證過,真實有效,但還未向官方研發求證,不確定是否在什么場景下都能用,歡迎對這方面有研究的大神指出斧正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8753.html
標籤:其他數據庫
下一篇:kettle 作業并行問題
