GaussDB 常用基础命令

6 阅读4分钟

GaussDB 常用命令宝典:从入门到精通

前言

在数据库管理和开发工作中,熟练掌握常用命令是提高效率的关键。华为GaussDB作为一款领先的企业级分布式数据库,其命令体系既继承了传统SQL的精华,又融入了分布式特性。本文将系统梳理GaussDB的常用命令,助你快速上手和精通。

一、数据库连接与基础管理

1.1 连接数据库

-- 使用gsql客户端连接
gsql -d database_name -h host_ip -p port -U username -W password

-- 连接示例
gsql -d mydb -h 192.168.1.100 -p 5432 -U gaussdb -W 'YourPassword123'

-- 查看当前连接信息
SELECT current_database(), current_user, inet_server_addr(), inet_server_port();

1.2 数据库管理

-- 创建数据库
CREATE DATABASE sales_db 
WITH ENCODING='UTF8' 
OWNER=gaussdb 
CONNECTION LIMIT=100;

-- 查看所有数据库
\l
或
SELECT datname FROM pg_database;

-- 切换数据库
\c sales_db

-- 删除数据库
DROP DATABASE IF EXISTS sales_db;

二、表空间与存储管理

2.1 表空间操作

-- 创建表空间
CREATE TABLESPACE fast_space 
OWNER gaussdb 
LOCATION '/data/gaussdb/tablespace/fast';

-- 查看表空间
\db
或
SELECT spcname FROM pg_tablespace;

-- 创建表时指定表空间
CREATE TABLE orders (
    order_id INT,
    order_date DATE
) TABLESPACE fast_space;

三、表结构管理

3.1 表操作

-- 创建表
CREATE TABLE employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50) NOT NULL,
    salary DECIMAL(10,2),
    hire_date DATE DEFAULT CURRENT_DATE,
    department_id INT
) DISTRIBUTE BY HASH(emp_id);

-- 查看表结构
\d employees
\d+ employees  -- 详细信息

-- 修改表结构
ALTER TABLE employees 
ADD COLUMN email VARCHAR(100);

ALTER TABLE employees 
ALTER COLUMN salary TYPE DECIMAL(12,2);

-- 重命名表
ALTER TABLE employees RENAME TO staff;

3.2 索引管理

-- 创建索引
CREATE INDEX idx_emp_name ON employees(emp_name);
CREATE INDEX idx_hire_date ON employees(hire_date DESC);

-- 查看索引
\di
或
SELECT indexname, indexdef FROM pg_indexes WHERE tablename='employees';

-- 重建索引
REINDEX INDEX idx_emp_name;

四、数据操作命令

4.1 数据增删改查

-- 插入数据
INSERT INTO employees (emp_id, emp_name, salary) 
VALUES (1, '张三', 15000.00);

-- 批量插入
INSERT INTO employees VALUES 
(2, '李四', 18000.00),
(3, '王五', 22000.00);

-- 更新数据
UPDATE employees 
SET salary = salary * 1.1 
WHERE department_id = 10;

-- 删除数据
DELETE FROM employees WHERE emp_id = 3;

-- 清空表
TRUNCATE TABLE employees;

4.2 查询优化

-- 使用EXPLAIN分析查询计划
EXPLAIN ANALYZE 
SELECT * FROM employees WHERE salary > 10000;

-- 设置查询优化参数
SET enable_hashjoin = on;
SET enable_mergejoin = off;
SET work_mem = '64MB';

五、用户与权限管理

5.1 用户管理

-- 创建用户
CREATE USER developer WITH PASSWORD 'DevPass123' 
VALID UNTIL '2025-12-31';

-- 修改用户密码
ALTER USER developer WITH PASSWORD 'NewPass456';

-- 查看所有用户
\du
或
SELECT usename FROM pg_user;

5.2 权限控制

-- 授予权限
GRANT SELECT, INSERT, UPDATE ON employees TO developer;
GRANT ALL PRIVILEGES ON DATABASE sales_db TO developer;

-- 授予模式权限
GRANT USAGE ON SCHEMA public TO developer;
GRANT CREATE ON SCHEMA public TO developer;

-- 查看权限
\dp employees
或
SELECT * FROM information_schema.table_privileges;

六、备份与恢复

6.1 逻辑备份

# 使用gs_dump备份
gs_dump -h 192.168.1.100 -p 5432 -U gaussdb -W password -f backup.sql sales_db

# 备份特定表
gs_dump -t employees -t departments -f tables_backup.sql sales_db

# 并行备份
gs_dump -j 4 -F d -f backup_dir/ sales_db

6.2 数据恢复

# 恢复数据库
gsql -d sales_db -f backup.sql

# 使用gs_restore
gs_restore -d sales_db backup.sql

七、性能监控与调优

7.1 系统监控

-- 查看当前连接
SELECT * FROM pg_stat_activity;

-- 查看锁信息
SELECT * FROM pg_locks;

-- 查看表统计信息
SELECT schemaname, tablename, n_live_tup, n_dead_tup 
FROM pg_stat_user_tables;

-- 查看索引使用情况
SELECT indexrelname, idx_scan, idx_tup_read, idx_tup_fetch 
FROM pg_stat_user_indexes;

7.2 性能调优

-- 收集统计信息
ANALYZE employees;
VACUUM ANALYZE employees;

-- 查看慢查询
SELECT query, calls, total_time, mean_time 
FROM pg_stat_statements 
ORDER BY mean_time DESC 
LIMIT 10;

八、分布式特性命令

8.1 分布式表管理

-- 查看数据分布
SELECT node_name, count(*) 
FROM pgxc_node 
GROUP BY node_name;

-- 重新分布数据
REDISTRIBUTE TABLE employees;

-- 查看数据倾斜
SELECT table_name, dn, count(*) as rows
FROM pg_get_tabledist('employees')
GROUP BY table_name, dn;

九、实用技巧与快捷方式

9.1 gsql客户端命令

-- 常用快捷命令
?                    -- 查看帮助
\q                    -- 退出
\timing               -- 开启/关闭执行时间显示
\x auto               -- 自动切换扩展显示模式
\e                    -- 使用编辑器编辑查询
\i filename.sql       -- 执行SQL文件
\o output.txt         -- 输出结果到文件

9.2 系统信息查询

-- 版本信息
SELECT version();

-- 系统配置
SHOW all;
SHOW shared_buffers;
SHOW max_connections;

-- 修改配置
SET statement_timeout = '60s';
ALTER SYSTEM SET shared_buffers = '2GB';

十、故障排查

10.1 日志查看

# 查看数据库日志
tail -f /var/log/gaussdb/pg_log/postgresql-2024-01-16_*.log

# 查看慢查询日志
grep "duration:" /var/log/gaussdb/pg_log/postgresql-*.log

10.2 常见问题排查

-- 查看长事务
SELECT pid, query_start, state, query 
FROM pg_stat_activity 
WHERE state != 'idle' 
ORDER BY query_start;

-- 终止进程
SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE pid = 12345;

结语

掌握这些GaussDB常用命令,你就能处理日常开发和管理中的大部分任务。建议在实际工作中多加练习,形成肌肉记忆。数据库管理是一个持续学习的过程,随着GaussDB版本的更新,会有更多新特性和命令加入,保持学习才能更好地发挥分布式数据库的优势。

提示:生产环境操作前请先在测试环境验证,重要操作务必做好备份!