苹果CMS十和十点主流版本数据库零基础优化全流程实操指南
时间:2026年06月10日 03:29:13
来源:易频IT社区
优化前的必要准备:全量备份
核心原则:没有备份绝不操作优化!
操作步骤1:phpMyAdmin全量备份
1. 登录服务器的phpMyAdmin后台(地址通常为`http://你的域名/phpmyadmin`或服务器面板指定地址)
2. 左侧列表选中苹果CMS对应的数据库(前缀一般是`mac_`,记不清的话看`/inc/config.php`里的`$db['database']`配置)
3. 顶部导航栏点击导出
4. 导出方式选自定义 - 显示所有可能的选项
5. 确保选中所有数据表(默认已全选)
6. 格式保持默认SQL
7. 勾选添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER 语句
8. 点击底部执行,自动下载.sql格式的备份文件到本地
操作步骤2:命令行全量备份(可选,适合服务器无phpMyAdmin的情况)
1. SSH连接到服务器
2. 执行以下命令(替换大写的参数为你的实际配置):
```bash
mysqldump -uDB用户名 -pDB密码 DB数据库名 > /root/maccms_backup_$(date +%Y%m%d_%H%M%S).sql
```
3. 执行后没有任何报错即成功,备份文件保存在`/root/`目录下
第一步:清理无用数据(占优化后性能提升的60%以上)
子步骤1:清理缓存表
1. 在phpMyAdmin左侧选中苹果CMS数据库
2. 找到前缀为`mac_cache`的表,点击右侧操作
3. 找到删除数据(TRUNCATE),点击并确认(注意是TRUNCATE不是DROP表)
4. 重复上述操作清理`mac_session`(如果是10.2+版本,`mac_session`已改为Redis或文件,不需要操作)
子步骤2:清理失效的采集数据
1. 点击顶部SQL标签
2. 复制以下SQL并执行(自动清理半年前已过期的采集日志、采集失败记录、已删除的视频缓存关联数据):
```sql
-- 清理过期采集日志(默认保留6个月,可修改WHERE后的时间)
DELETE FROM mac_collect_log WHERE c_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 6 MONTH));
-- 清理采集失败记录
DELETE FROM mac_collect_failed;
-- 清理已删除视频的关联数据(10.x通用)
DELETE FROM mac_data WHERE d_id NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_play WHERE p_id NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_down WHERE d_id NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_picture WHERE pic_id NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_tag_relation WHERE tr_mid=1 AND tr_rid NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_actor_relation WHERE ar_mid=1 AND ar_rid NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_role_relation WHERE rr_mid=1 AND rr_rid NOT IN (SELECT v_id FROM mac_vod);
DELETE FROM mac_comment WHERE c_mid=1 AND c_rid NOT IN (SELECT v_id FROM mac_vod);
```
3. 执行后看左侧表的行数,会大幅下降
子步骤3:清理冗余评论
1. 点击顶部SQL标签
2. 复制以下SQL并执行(自动清理30天前未审核的垃圾评论、重复内容评论):
```sql
-- 清理30天前未审核的评论
DELETE FROM mac_comment WHERE c_status=0 AND c_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
-- 清理同一IP同一内容重复3次以上的评论(保留最新1条)
DELETE a FROM mac_comment a, (
SELECT c_ip, c_content, MAX(c_id) max_id FROM mac_comment
GROUP BY c_ip, c_content HAVING COUNT() > 3
) b WHERE a.c_ip = b.c_ip AND a.c_content = b.c_content AND a.c_id < b.max_id;
```
第二步:数据表结构优化(修复碎片、添加索引)
子步骤1:修复并优化所有表
1. 回到数据库左侧列表,点击顶部结构标签
2. 勾选所有表(全选框在列表顶部)
3. 底部下拉框选择修复表,点击执行
4. 再次勾选所有表,下拉框选择优化表,点击执行
5. 执行后显示“OK”即完成
子步骤2:添加缺失的索引(大幅提升查询速度)
1. 点击顶部SQL标签
2. 复制以下SQL并执行(这些是苹果CMS10.x官方未默认加但高频查询的索引,不会覆盖原有索引):
```sql
-- mac_vod表高频查询索引
ALTER TABLE mac_vod ADD INDEX idx_v_status (v_status);
ALTER TABLE mac_vod ADD INDEX idx_v_type (v_type);
ALTER TABLE mac_vod ADD INDEX idx_v_time (v_time);
ALTER TABLE mac_vod ADD INDEX idx_v_hits (v_hits);
ALTER TABLE mac_vod ADD INDEX idx_v_hits_month (v_hits_month);
ALTER TABLE mac_vod ADD INDEX idx_v_hits_week (v_hits_week);
ALTER TABLE mac_vod ADD INDEX idx_v_hits_day (v_hits_day);
-- mac_tag表索引
ALTER TABLE mac_tag ADD INDEX idx_tag_name (tag_name);
-- mac_tag_relation表索引
ALTER TABLE mac_tag_relation ADD INDEX idx_tr_mid_rid (tr_mid, tr_rid);
ALTER TABLE mac_tag_relation ADD INDEX idx_tr_mid_tid (tr_mid, tr_tid);
-- mac_comment表索引
ALTER TABLE mac_comment ADD INDEX idx_c_mid_rid (c_mid, c_rid);
ALTER TABLE mac_comment ADD INDEX idx_c_status (c_status);
```
第三步:修改配置参数(长期优化)
子步骤1:修改苹果CMS自身配置
1. 用FTP工具(FileZilla、WinSCP均可)下载网站根目录下的`/inc/config.php`
2. 找到以下参数并修改(可直接覆盖原配置段):
```php
// 缓存配置
$MAC['cache']['type'] = 'file'; // 如果有Redis,改成'redis'(后面附Redis配置)
$MAC['cache']['prefix'] = 'mac_';
$MAC['cache']['expire'] = 3600; // 缓存时间1小时,可根据更新频率调整
$MAC['cache']['page'] = true; // 开启页面静态缓存
$MAC['cache']['page_time'] = 1800; // 页面静态缓存30分钟
// 数据库查询优化
$MAC['db']['cache'] = true; // 开启数据库查询缓存
$MAC['db']['cache_time'] = 1800; // 数据库查询缓存30分钟
$MAC['db']['debug'] = false; // 必须关闭调试模式
```
3. 如果有Redis服务器,改成以下配置:
```php
// Redis缓存配置(替换REDIS_IP、REDIS_PORT、REDIS_PASSWORD为你的实际值)
$MAC['cache']['type'] = 'redis';
$MAC['cache']['prefix'] = 'mac_';
$MAC['cache']['expire'] = 3600;
$MAC['cache']['page'] = true;
$MAC['cache']['page_time'] = 1800;
$MAC['cache']['redis']['host'] = 'REDIS_IP';
$MAC['cache']['redis']['port'] = REDIS_PORT;
$MAC['cache']['redis']['password'] = 'REDIS_PASSWORD';
$MAC['cache']['redis']['select'] = 0;
```
4. 保存并覆盖原`/inc/config.php`文件
子步骤2:修改MySQL配置(可选,VPS/云服务器用户可操作)
1. 找到MySQL配置文件(CentOS通常在`/etc/my.cnf`,Ubuntu/Debian通常在`/etc/mysql/mysql.conf.d/mysqld.cnf`)
2. 用vim或nano编辑器打开,在`[mysqld]`段下添加或修改以下参数(根据服务器内存调整,这里按2G内存示例):
```ini
2G内存MySQL优化配置
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
key_buffer_size = 128M
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
```
3. 保存后重启MySQL服务(CentOS7+执行`systemctl restart mysqld`,Ubuntu/Debian执行`systemctl restart mysql`)
优化后的验证
1. 访问网站前台,检查页面加载速度(可以用浏览器开发者工具Network标签看首次加载时间)
2. 进入phpMyAdmin,查看数据库总大小、表碎片情况(应该大幅减少)
3. 检查苹果CMS后台的数据采集、视频添加等功能是否正常