本文介紹GanosBase Trajectory常用功能。
使用合適的時空索引
合適的索引能加快查詢速度,需要根據應用情境的要求來構建合適的索引。可針對軌跡資料類型構建以下索引:
空間索引:只針對軌跡的空間範圍建立索引,適合只查詢軌跡空間範圍情況。
時間索引:只針對軌跡的時間範圍建立索引,適合只查詢軌跡時間範圍情況。
時空複合索引:建立時空聯合索引,適合時間和空間同時過濾查詢。
--建立基於函數的空間索引,加速空間過濾
create index tr_spatial_geometry_index on trajtab using gist (st_trajectoryspatial(traj));
--建立基於函數的時間段索引,加速時間過濾
create index tr_timespan_time_index on trajtab using gist (st_timespan(traj));
--建立基於函數的軌跡起止時間
create index tr_starttime_index on trajtab using btree (st_starttime(traj));
create index tr_endtime_index on trajtab using btree (st_endtime(traj));
--首先建立btree_gist擴充
create extension btree_gist;
--建立btree_gist 起始時間、終止時間、空間複合索引
create index tr_traj_test_stm_etm_sp_index on traj_test using gist (st_starttime(traj),st_endtime(traj),st_trajectoryspatial(traj));採用合理的分區表
隨著使用時間的增加,資料庫中的軌跡資料量也不斷增加,導致資料庫索引變大,查詢變慢。您可考慮採用分區表的模式降低單表資料量。
使用分區表請參見PolarDB文檔中分區表簡介。
減少使用字串類型屬性
軌跡屬性中如有大量的字串屬性,會導致儲存空間浪費和效能下降。
如果字串為固定內容,可以轉換為整型進行枚舉,建議在程式中進行轉換;
如果無法避免使用字串類型屬性,可指定字串類型預設長度,避免空間浪費。
設定字串類型預設長度方法如下:
-- 設定字串類型預設長度為32 Set ganos.trajectory.attr_string_length = 32;
採用批量軌跡產生模式
使用批量軌跡點產生軌跡模式,避免採取單個軌跡點追加模式。
採用最佳化壓縮模式
lz4 壓縮演算法是一種優秀的壓縮演算法,具有更高的壓縮率和更快的執行速度。如果要啟用lz4壓縮演算法,設定方法如下:
-- 設定使用lz4 壓縮
Set toast_compression_use_lz4 = true;
-- 使用pg預設壓縮演算法
Set toast_compression_use_lz4 = false;如果要對整個資料庫預設採用lz4壓縮演算法,設定方法如下:
-- 資料庫使用lz4壓縮
Alter database dbname Set toast_compression_use_lz4 = true;
-- 資料庫使用預設壓縮
Alter database dbname Set toast_compression_use_lz4 = false;