产品动态
-- 查看表类型SELECTschemaname,tablename,CASEWHEN relpersistence = 'u' THEN 'UNLOGGED'WHEN relpersistence = 'p' THEN 'PERMANENT'ELSE 'OTHER'END as table_typeFROM pg_tables tJOIN pg_class c ON c.relname = t.tablenameWHERE schemaname = 'public';
-- 将 UNLOGGED 表转换为普通表,unlogged_table_name 为表名称ALTER TABLE unlogged_table_name SET LOGGED;-- 锁定状态监控, mode 字段为锁类型,AccessExclusiveLock 为最严格的锁, unlogged_table_name 为表名称SELECTl.locktype,l.mode,l.granted,l.pid,a.state,a.query_start,now() - a.query_start as duration,CASEWHEN l.granted THEN 'GRANTED'ELSE 'WAITING'END as lock_status,substring(a.query, 1, 80) as query_snippetFROM pg_locks lLEFT JOIN pg_stat_activity a ON l.pid = a.pidWHERE l.relation IS NOT NULLAND EXISTS (SELECT 1 FROM pg_class cWHERE c.oid = l.relationAND c.relname = 'unlogged_table_name')ORDER BY l.granted, a.query_start;
-- 对于大表,建议分批转换-- 1. 创建新的 LOGGED 表CREATE TABLE user_cache_new (LIKE user_cache);-- 2. 分批迁移数据INSERT INTO user_cache_newSELECT * FROM user_cacheWHERE created_at >= '2024-01-01' AND created_at < '2024-01-02';-- 3. 重命名表BEGIN;DROP TABLE user_cache;ALTER TABLE user_cache_new RENAME TO user_cache;COMMIT;
tencentdb_log_unlogged_table 参数,在保持 PostgreSQL 原生功能的同时,为用户提供了更好的数据安全保障。参数修改请参考 设置实例参数。-- 创建 UNLOGGED 表amy=> CREATE UNLOGGED TABLE test_table (id INT, data TEXT);-- 系统提示 WARNING :WARNING: change unlogged table to logged table, If you want to use unlogged tables, please set tencentdb_log_unlogged_table to false.CREATE TABLE-- 验证表类型,返回: 'p' (PERMANENT/LOGGED)am=> SELECT relpersistence FROM pg_class WHERE relname = 'test_table';relpersistence----------------p(1 row
tencentdb_log_unlogged_table 参数是否需要重启实例? ALTER TABLE SET LOGGED 转换。文档反馈