-- 檢查約束違規
SELECT ANALYZE_CONSTRAINTS('fb_s.c_log');
-- 刪除主鍵(Vertica 主鍵不強制唯一,僅供優化器參考)
ALTER TABLE fb_s.c_log DROP CONSTRAINT C_PRIMARY;
ALTER TABLE fb_s.user_info DROP CONSTRAINT C_PRIMARY;
注意:Vertica 主鍵預設 ENABLED 但 NOT ENFORCED,僅用於查詢優化,不阻擋重複值寫入。
-- 建立用戶與 Schema
CREATE USER fb_s_sql IDENTIFIED BY 'password';
CREATE SCHEMA fb_s_sql AUTHORIZATION fb_s_sql;
-- 權限授予
GRANT ALL ON SCHEMA fb_s_sql TO fb_s_sql;
GRANT ALL ON SCHEMA fb_s TO fb_s_sql; -- 跨 Schema 訪問
GRANT ALL ON TABLE fb_s_sql.sqllog TO fb_s_sql;
CREATE TABLE fb_s.c_log (
uid INT NOT NULL,
cash INT, gold INT, level INT,
rtime TIMESTAMP, tid VARCHAR(20),
act VARCHAR(50), item VARCHAR(500),
value INT, value2 INT, time TIMESTAMP
);
CREATE TABLE fb_s.new_c_log (
uid INT PRIMARY KEY NOT NULL,
cash INT, gold INT, level INT,
rtime TIMESTAMP, tid VARCHAR(20),
act VARCHAR(50), item VARCHAR(500),
value INT, value2 INT, time TIMESTAMP NOT NULL
)
PARTITION BY EXTRACT(YEAR FROM time)*100 + EXTRACT(MONTH FROM time);
DROP_PARTITIONS 秒級歸檔舊數據。-- 新增欄位帶預設值
ALTER TABLE fb_s.c_log ADD COLUMN value2 INT DEFAULT 0;
-- 修改預設值
ALTER TABLE fb_s.c_log ALTER COLUMN duration SET DEFAULT 0;
ALTER TABLE fb_s.c_log ALTER COLUMN mesg SET DEFAULT '';
INSERT INTO fb_s.c_log (uid,cash,gold,level,rtime,tid,act,item,value,value2,time)
SELECT * FROM fb_s.c_logbak;
REM 來源庫導出 CSV(vsql 命令列工具)
vsql -d topcity -U dbadmin -w password -F ',' -At -o fs_user_info.csv -c "SELECT * FROM fb_s.user_info;"
vsql -d topcity -U dbadmin -w password -F ',' -At -o fs_c_log.csv -c "SELECT * FROM fb_s.c_log;"
REM 目的庫導入(COPY 命令,高效並行)
COPY fb_s.user_info FROM '/opt/fs_user_info.csv' EXCEPTIONS '/tmp/exp.log' DELIMITER ',';
COPY fb_s.c_log FROM '/opt/fs_c_log.csv' EXCEPTIONS '/tmp/exp.log' DELIMITER ',';
關鍵參數:
-F ',':欄位分隔符-At:僅輸出資料行(無標題、無對齊)EXCEPTIONS:錯誤行導向日誌檔,不中斷整體導入DELIMITER:指定分隔符,支援多字元SELECT ANALYZE_STATISTICS('schema.table'); 定期執行。MOVEOUT / MERGEOUT 狀態,避免 ROS 容器過多導致查詢降級。EXPLAIN 分析:關注 SEGMENT、BROADCAST、RESEGMENT 網路傳輸開銷。-- 查看節點狀態
SELECT * FROM v_monitor.hosts;
-- 查看投影儲存佔用
SELECT anchor_table_name, SUM(used_bytes)/1024^3 AS GB
FROM v_monitor.projection_storage GROUP BY 1 ORDER BY 2 DESC;
-- 手動觸發 Tuple Mover
SELECT DO_TM_TASK('moveout');
SELECT DO_TM_TASK('mergeout');