1. AntDB概述与环境规划
AntDB是亚信科技自主研发的一款高性能、高可用的分布式关系型数据库,基于PostgreSQL深度优化开发。AntDB支持分布式事务、在线扩容、读写分离等特性,广泛应用于电信、金融、政务等行业。更多学习教程www.fgedu.net.cn
1.1 AntDB版本说明
AntDB目前主要版本为7.2,本教程以AntDB 7.2为例进行详细讲解。
$ antdb –version
antdb (AntDB) 7.2.0
# 查看服务状态
$ antdb_ctl status
antdb_ctl: server is running (PID: 12345)
/usr/local/antdb/bin/antdb -D /data/antdb/data
# 查看集群状态
$ antdb_ctl cluster status
Node ID | Node Name | IP Address | Port | Role | Status
———|————-|—————|——–|———-|——–
1 | antdb_01 | 192.168.1.51 | 5432 | Master | Online
2 | antdb_02 | 192.168.1.52 | 5432 | Slave | Online
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
AntDB端口:5432
管理端口:5433
数据目录:/data/antdb/data
配置目录:/data/antdb/conf
日志目录:/data/antdb/log
备份目录:/backup/antdb
存储规划:
数据库名:fgedudb
表名前缀:fgedu
表空间:fgedu_tbs
数据文件:/data/antdb/data/fgedudb.dbf
1.3 AntDB核心特性
1. 分布式架构:支持水平扩展,自动分片
2. 高可用性:支持主备复制、自动故障切换
3. 兼容PostgreSQL:完全兼容PostgreSQL协议和语法
4. 分布式事务:支持ACID分布式事务
5. 读写分离:自动路由读写请求
6. 在线扩容:支持不停机扩容
7. 并行查询:支持并行执行复杂查询
8. 多租户:支持资源隔离的多租户架构
2. 硬件环境要求与检查
在安装AntDB之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:4核心
内存:8GB
磁盘:100GB
推荐配置(生产环境):
CPU:16核心以上
内存:32GB以上
磁盘:500GB以上SSD
大规模部署配置:
CPU:32核心以上
内存:128GB以上
磁盘:2TB以上SSD
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 31Gi 1.0Gi 30Gi 256Mi 1.0Gi 30Gi
Swap: 7Gi 0B 7Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data
2.3 内核参数配置
# vi /etc/sysctl.d/99-antdb.conf
# 添加以下参数
# 共享内存参数
kernel.shmmax = 17179869184
kernel.shmall = 4194304
kernel.shmmni = 4096
# 信号量参数
kernel.sem = 250 32000 100 128
# 文件描述符限制
fs.file-max = 6815744
# 网络参数
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-antdb.conf
# 配置用户限制
# vi /etc/security/limits.conf
# 添加以下配置
antdb soft nproc 16384
antdb hard nproc 16384
antdb soft nofile 65536
antdb hard nofile 65536
antdb soft stack 10240
antdb hard stack 32768
3. AntDB安装步骤
本节详细介绍AntDB 7.2的安装过程。学习交流加群风哥QQ113257174
3.1 创建用户和目录
# groupadd -g 1001 antdb
# useradd -u 1001 -g antdb -d /home/antdb -s /bin/bash antdb
# passwd antdb
# 创建安装目录
# mkdir -p /usr/local/antdb
# mkdir -p /data/antdb/{data,conf,log,backup}
# mkdir -p /backup/antdb
# 设置目录权限
# chown -R antdb:antdb /usr/local/antdb
# chown -R antdb:antdb /data/antdb
# chown -R antdb:antdb /backup/antdb
# 设置目录权限
# chmod 755 /usr/local/antdb
# chmod 750 /data/antdb
# chmod 750 /backup/antdb
3.2 安装AntDB软件
# su – antdb
# 解压安装包
$ cd /usr/local/src
$ tar -xzf AntDB-7.2-Linux-x86_64.tar.gz
# 执行安装脚本
$ cd AntDB-7.2
$ ./install.sh
# 输出示例:
欢迎使用AntDB安装程序
========================
安装目录 [/usr/local/antdb]:
数据目录 [/data/antdb/data]:
配置目录 [/data/antdb/conf]:
日志目录 [/data/antdb/log]:
正在安装AntDB…
安装完成!
# 验证安装
$ ls -la /usr/local/antdb/
总用量 0
drwxr-xr-x. 2 antdb antdb 6 4月 4 10:00 bin
drwxr-xr-x. 2 antdb antdb 6 4月 4 10:00 lib
drwxr-xr-x. 2 antdb antdb 6 4月 4 10:00 share
# 配置环境变量
$ vi ~/.bash_profile
# 添加以下内容
export ANTDB_HOME=/usr/local/antdb
export PATH=$ANTDB_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ANTDB_HOME/lib:$LD_LIBRARY_PATH
# 使环境变量生效
$ source ~/.bash_profile
3.3 初始化数据库
$ antdb_ctl initdb -D /data/antdb/data
# 输出示例:
属于此数据库系统的文件宿主为”antdb”。
此用户也必须为服务器进程的宿主。
数据库簇将使用简体中文语言初始化。
默认的数据库编码为”UTF8″。
默认的数据库排序规则为”Chinese_PRC.UTF8″。
创建目录 /data/antdb/data … 成功
正在创建子目录 … 成功
选择默认最大连接数 … 100
选择默认共享缓冲区 … 128MB
选择默认动态共享内存类型 … posix
创建配置文件 … 成功
运行引导脚本 … 成功
执行引导后初始化 … 成功
同步数据到磁盘 … 成功
警告:为本地连接启用”trust”身份验证。
你可以通过编辑pg_hba.conf更改或下次运行initdb时使用-A选项。
成功。你现在可以用下面的命令开启数据库服务器:
antdb_ctl start -D /data/antdb/data
3.4 启动数据库服务
$ antdb_ctl start -D /data/antdb/data
# 输出示例:
等待服务器进程启动…. 完成
服务器进程已经启动
# 检查服务状态
$ antdb_ctl status
antdb_ctl: server is running (PID: 12345)
/usr/local/antdb/bin/antdb -D /data/antdb/data
# 查看端口
$ netstat -tlnp | grep antdb
tcp6 0 0 :::5432 :::* LISTEN 12345/antdb
tcp6 0 0 :::5433 :::* LISTEN 12345/antdb
# 设置开机自启动
# vi /etc/systemd/system/antdb.service
[Unit]
Description=AntDB Database Server
After=network.target
[Service]
Type=forking
User=antdb
Group=antdb
Environment=ANTDB_HOME=/usr/local/antdb
ExecStart=/usr/local/antdb/bin/antdb_ctl start -D /data/antdb/data
ExecStop=/usr/local/antdb/bin/antdb_ctl stop -D /data/antdb/data
ExecReload=/usr/local/antdb/bin/antdb_ctl reload -D /data/antdb/data
[Install]
WantedBy=multi-user.target
# 启用服务
# systemctl enable antdb
# systemctl start antdb
3.5 创建数据库和用户
$ antdb_cli -h 192.168.1.51 -p 5432 -d postgres -U antdb
# 输出示例:
AntDB 7.2.0 控制台
输入 “help” 获取帮助信息。
# 创建数据库
SQL> CREATE DATABASE fgedudb;
# 输出示例:
CREATE DATABASE
# 创建用户
SQL> CREATE USER fgedu WITH PASSWORD ‘fgedu123’;
# 输出示例:
CREATE USER
# 授权
SQL> GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;
# 输出示例:
GRANT
# 查看数据库
SQL> \l
# 输出示例:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
———–+———-+———-+————-+————-+———————–
postgres | antdb | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
fgedudb | antdb | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/antdb +
| | | | | antdb=CTc/antdb +
| | | | | fgedu=CTc/antdb
4. AntDB参数配置
AntDB参数配置是数据库性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 内存参数配置
$ vi /data/antdb/conf/postgresql.conf
# 共享缓冲区大小(建议设置为物理内存的25%-40%)
shared_buffers = 8GB
# 有效缓存大小(建议设置为物理内存的50%-75%)
effective_cache_size = 16GB
# 工作内存(用于排序和哈希操作)
work_mem = 256MB
# 维护工作内存(用于VACUUM、CREATE INDEX等)
maintenance_work_mem = 1GB
# 动态共享内存类型
dynamic_shared_memory_type = posix
4.2 连接和并发配置
$ vi /data/antdb/conf/postgresql.conf
# 最大连接数
max_connections = 500
# 超级用户保留连接
superuser_reserved_connections = 10
# 最大并行工作者数
max_parallel_workers = 8
max_parallel_workers_per_gather = 4
# 最大工作进程数
max_worker_processes = 16
# 重启数据库使配置生效
$ antdb_ctl restart -D /data/antdb/data
4.3 WAL和日志配置
$ vi /data/antdb/conf/postgresql.conf
# WAL缓冲区大小
wal_buffers = 64MB
# 检查点段大小
max_wal_size = 4GB
min_wal_size = 1GB
# 检查点完成目标
checkpoint_completion_target = 0.9
# 日志配置
logging_collector = on
log_directory = ‘/data/antdb/log’
log_filename = ‘antdb-%Y-%m-%d_%H%M%S.log’
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_duration_statement = 1000
# 重启数据库
$ antdb_ctl restart -D /data/antdb/data
5. 数据库管理
AntDB支持标准的PostgreSQL SQL操作,本节介绍常用的数据库管理命令。from:www.itpux.com
5.1 表空间管理
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu
# 创建表空间
SQL> CREATE TABLESPACE fgedu_tbs LOCATION ‘/data/antdb/data/fgedu_tbs’;
# 输出示例:
CREATE TABLESPACE
# 查看表空间
SQL> \db
# 输出示例:
List of tablespaces
Name | Owner | Location
————+———-+—————————
pg_default | antdb |
pg_global | antdb |
fgedu_tbs | antdb | /data/antdb/data/fgedu_tbs
# 创建数据库指定表空间
SQL> CREATE DATABASE fgedudb2 TABLESPACE fgedu_tbs;
5.2 表管理
SQL> CREATE TABLE fgedu_employees (
emp_id SERIAL PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
dept_id INTEGER,
salary NUMERIC(10,2),
hire_date DATE DEFAULT CURRENT_DATE,
status VARCHAR(20) DEFAULT ‘ACTIVE’
) TABLESPACE fgedu_tbs;
# 输出示例:
CREATE TABLE
# 创建索引
SQL> CREATE INDEX idx_fgedu_emp_dept ON fgedu_employees(dept_id);
# 输出示例:
CREATE INDEX
# 插入数据
SQL> INSERT INTO fgedu_employees (emp_name, dept_id, salary)
VALUES (‘张三’, 10, 8000.00);
SQL> INSERT INTO fgedu_employees (emp_name, dept_id, salary)
VALUES (‘李四’, 20, 9000.00);
# 查询数据
SQL> SELECT * FROM fgedu_employees;
# 输出示例:
emp_id | emp_name | dept_id | salary | hire_date | status
——–+———-+———+———+————+——–
1 | 张三 | 10 | 8000.00 | 2026-04-04 | ACTIVE
2 | 李四 | 20 | 9000.00 | 2026-04-04 | ACTIVE
# 更新数据
SQL> UPDATE fgedu_employees SET salary = 8500 WHERE emp_id = 1;
# 删除数据
SQL> DELETE FROM fgedu_employees WHERE emp_id = 2;
5.3 用户和权限管理
SQL> CREATE USER app_user WITH PASSWORD ‘app123456’;
# 输出示例:
CREATE USER
# 授予权限
SQL> GRANT CONNECT ON DATABASE fgedudb TO app_user;
SQL> GRANT USAGE ON SCHEMA public TO app_user;
SQL> GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
# 查看用户
SQL> \du
# 输出示例:
List of roles
Role name | Attributes | Member of
———–+————————————————————+———–
antdb | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
app_user | | {}
fgedu | | {}
# 撤销权限
SQL> REVOKE DELETE ON fgedu_employees FROM app_user;
# 删除用户
SQL> DROP USER app_user;
6. 网络连接配置
网络连接配置是客户端访问AntDB的关键,需要正确配置监听和防火墙规则。更多学习教程www.fgedu.net.cn
6.1 配置监听
$ vi /data/antdb/conf/postgresql.conf
# 监听地址和端口
listen_addresses = ‘*’
port = 5432
# 最大连接数
max_connections = 500
# 重启数据库
$ antdb_ctl restart -D /data/antdb/data
# 查看监听状态
$ netstat -tlnp | grep antdb
tcp6 0 0 :::5432 :::* LISTEN 12345/antdb
tcp6 0 0 :::5433 :::* LISTEN 12345/antdb
# 配置防火墙
# firewall-cmd –permanent –add-port=5432/tcp
success
# firewall-cmd –permanent –add-port=5433/tcp
success
# firewall-cmd –reload
success
6.2 配置访问控制
$ vi /data/antdb/conf/pg_hba.conf
# 添加以下配置
# TYPE DATABASE USER ADDRESS METHOD
# 本地连接
local all all trust
# IPv4本地连接
host all all 127.0.0.1/32 trust
# IPv6本地连接
host all all ::1/128 trust
# 允许192.168.1.0/24网段访问
host all all 192.168.1.0/24 md5
# 允许特定IP访问
host fgedudb fgedu 192.168.1.52/32 md5
# 重新加载配置
$ antdb_ctl reload -D /data/antdb/data
6.3 使用JDBC连接
//
//
//
//
//
// Java连接示例
import java.sql.*;
public class AntDBExample {
public static void main(String[] args) {
String url = “jdbc:postgresql://192.168.1.51:5432/fgedudb”;
String user = “fgedu”;
String password = “fgedu123”;
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 查询数据
String sql = “SELECT * FROM fgedu_employees”;
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
System.out.println(“ID: ” + rs.getInt(“emp_id”) +
“, Name: ” + rs.getString(“emp_name”));
}
}
// 插入数据
String insertSql = “INSERT INTO fgedu_employees (emp_name, dept_id, salary) VALUES (?, ?, ?)”;
try (PreparedStatement pstmt = conn.prepareStatement(insertSql)) {
pstmt.setString(1, “王五”);
pstmt.setInt(2, 30);
pstmt.setDouble(3, 10000.00);
pstmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
7. 备份恢复配置
备份恢复是数据库管理的重要环节,AntDB提供了多种备份方式。学习交流加群风哥微信: itpux-com
7.1 逻辑备份
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_$(date +%Y%m%d).sql
# 输出示例:
— AntDB database dump
— Dumped from database version 7.2.0
— Dumped by antdb_dump version 7.2.0
— 备份特定表
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -t fgedu_employees -U fgedu -f /backup/antdb/employees_$(date +%Y%m%d).sql
# 备份整个数据库(包括创建语句)
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -C -c -f /backup/antdb/fgedudb_full_$(date +%Y%m%d).sql
# 压缩备份
$ gzip /backup/antdb/fgedudb_$(date +%Y%m%d).sql
7.2 逻辑恢复
$ gunzip /backup/antdb/fgedudb_20260404.sql.gz
# 恢复数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_20260404.sql
# 或者使用命令行
$ antdb_restore -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_20260404.sql
# 恢复到新数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d postgres -U antdb
SQL> CREATE DATABASE fgedudb_new;
SQL> \q
$ antdb_restore -h 192.168.1.51 -p 5432 -d fgedudb_new -U antdb -f /backup/antdb/fgedudb_20260404.sql
7.3 物理备份
$ antdb_basebackup -h 192.168.1.51 -p 5432 -D /backup/antdb/base_$(date +%Y%m%d) -U fgedu -P
# 输出示例:
事务日志起始位置: 0/1000000
100000/100000 kB (100%), 表空间 1/1
事务日志结束位置: 0/1000100
antdb_basebackup: 基础备份完成
# 压缩物理备份
$ tar -czf /backup/antdb/base_$(date +%Y%m%d).tar.gz -C /backup/antdb base_$(date +%Y%m%d)
# 清理临时目录
$ rm -rf /backup/antdb/base_$(date +%Y%m%d)
7.4 自动备份脚本
$ vi /usr/local/bin/antdb_backup.sh
#!/bin/bash
BACKUP_DIR=/backup/antdb
DATE=$(date +%Y%m%d)
LOG_FILE=/data/antdb/log/backup.log
echo “=== Backup started at $(date) ===” >> $LOG_FILE
# 逻辑备份
antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f ${BACKUP_DIR}/fgedudb_${DATE}.sql >> $LOG_FILE 2>&1
gzip ${BACKUP_DIR}/fgedudb_${DATE}.sql >> $LOG_FILE 2>&1
# 物理备份(每周日执行)
if [ $(date +%w) -eq 0 ]; then
antdb_basebackup -h 192.168.1.51 -p 5432 -D ${BACKUP_DIR}/base_${DATE} -U fgedu -P >> $LOG_FILE 2>&1
tar -czf ${BACKUP_DIR}/base_${DATE}.tar.gz -C ${BACKUP_DIR} base_${DATE} >> $LOG_FILE 2>&1
rm -rf ${BACKUP_DIR}/base_${DATE}
fi
# 清理30天前的备份
find ${BACKUP_DIR} -name “*.gz” -mtime +30 -delete >> $LOG_FILE 2>&1
echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE
# 设置脚本权限
$ chmod +x /usr/local/bin/antdb_backup.sh
# 配置定时任务
$ crontab -e
# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/antdb_backup.sh
8. 升级与迁移
AntDB升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com
8.1 版本升级
$ antdb –version
antdb (AntDB) 7.2.0
# 执行完整备份
# 参见7.1和7.3节备份步骤
# 停止数据库
$ antdb_ctl stop -D /data/antdb/data
# 备份数据目录
$ tar -czf /backup/antdb/data_backup_$(date +%Y%m%d).tar.gz /data/antdb/data
# 升级软件
$ cd /usr/local/src
$ tar -xzf AntDB-7.3-Linux-x86_64.tar.gz
$ cd AntDB-7.3
$ ./upgrade.sh -D /data/antdb/data
# 输出示例:
正在升级数据库…
检查数据库版本… 7.2.0
执行升级脚本…
升级完成,当前版本: 7.3.0
# 启动数据库
$ antdb_ctl start -D /data/antdb/data
# 验证版本
$ antdb –version
antdb (AntDB) 7.3.0
8.2 迁移到新服务器
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_migrate.sql
$ gzip /backup/antdb/fgedudb_migrate.sql
# 传输备份文件
$ scp /backup/antdb/fgedudb_migrate.sql.gz new-server:/backup/antdb/
# 在新服务器安装AntDB
# 参见3.1-3.4节安装步骤
# 创建数据库
$ antdb_cli -h 192.168.1.52 -p 5432 -d postgres -U antdb
SQL> CREATE DATABASE fgedudb;
SQL> CREATE USER fgedu WITH PASSWORD ‘fgedu123’;
SQL> GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;
SQL> \q
# 恢复数据
$ gunzip /backup/antdb/fgedudb_migrate.sql.gz
$ antdb_restore -h 192.168.1.52 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_migrate.sql
# 验证迁移
$ antdb_cli -h 192.168.1.52 -p 5432 -d fgedudb -U fgedu
SQL> SELECT COUNT(*) FROM fgedu_employees;
# 输出示例:
count
——-
1000
9. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解AntDB的实际应用。from:www.itpux.com
9.1 高可用架构部署
# 主库: fgedudb01 (192.168.1.51)
# 备库: fgedudb02 (192.168.1.52)
# 主库配置
$ vi /data/antdb/conf/postgresql.conf
# 启用归档模式
archive_mode = on
archive_command = ‘cp %p /data/antdb/archive/%f’
archive_timeout = 300
# 配置流复制
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
max_replication_slots = 10
# 创建复制用户
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U antdb
SQL> CREATE USER repl_user REPLICATION LOGIN ENCRYPTED PASSWORD ‘repl123’;
# 备库配置
$ vi /data/antdb/conf/postgresql.conf
# 配置主库连接
primary_conninfo = ‘host=192.168.1.51 port=5432 user=repl_user password=repl123’
recovery_target_timeline = ‘latest’
# 启动备库
$ antdb_ctl start -D /data/antdb/data
# 查看复制状态
SQL> SELECT * FROM pg_stat_replication;
9.2 性能监控
SQL> SELECT * FROM pg_stat_database;
# 查看表统计
SQL> SELECT schemaname, tablename, n_tup_ins, n_tup_upd, n_tup_del
FROM pg_stat_user_tables
WHERE tablename LIKE ‘fgedu_%’;
# 查看当前连接
SQL> SELECT pid, usename, application_name, client_addr, state
FROM pg_stat_activity;
# 查看锁信息
SQL> SELECT * FROM pg_locks WHERE NOT granted;
# 查看慢查询
SQL> SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;
# 系统监控命令
# 查看进程
$ ps aux | grep antdb
# 查看资源使用
$ top -p $(pgrep antdb)
# 查看磁盘I/O
$ iostat -x 1
9.3 性能优化
SQL> ANALYZE fgedu_employees;
# 重建索引
SQL> REINDEX INDEX idx_fgedu_emp_dept;
# 清理表空间
SQL> VACUUM FULL fgedu_employees;
# 配置自动清理
$ vi /data/antdb/conf/postgresql.conf
autovacuum = on
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
# 查询优化
# 使用EXPLAIN分析执行计划
SQL> EXPLAIN SELECT * FROM fgedu_employees WHERE dept_id = 10;
# 输出示例:
QUERY PLAN
————————————————–
Seq Scan on fgedu_employees (cost=0.00..35.50 rows=10 width=100)
Filter: (dept_id = 10)
# 创建合适的索引
SQL> CREATE INDEX idx_fgedu_emp_dept ON fgedu_employees(dept_id);
# 再次查看执行计划
SQL> EXPLAIN SELECT * FROM fgedu_employees WHERE dept_id = 10;
# 输出示例:
QUERY PLAN
————————————————–
Index Scan using idx_fgedu_emp_dept on fgedu_employees (cost=0.29..8.30 rows=10 width=100)
Index Cond: (dept_id = 10)
# 重启数据库使配置生效
$ antdb_ctl restart -D /data/antdb/data
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
