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版本的更新,会有更多新特性和命令加入,保持学习才能更好地发挥分布式数据库的优势。
提示:生产环境操作前请先在测试环境验证,重要操作务必做好备份!