初级程序员必备的十大技能之数据库基础(四)

简介: 教程来源 http://xgmoi.cn/ 本节聚焦MySQL性能优化与安全运维:通过慢查询日志定位瓶颈,结合SQL写法优化(如避免SELECT*、善用EXPLAIN)、索引与分区设计提升查询效率;同时涵盖权限管控、mysqldump备份恢复及自动化策略,兼顾性能与可靠性。

六、性能优化:让查询飞起来

6.1 慢查询日志

-- 开启慢查询日志(MySQL)
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;  -- 超过2秒的查询
SET GLOBAL log_queries_not_using_indexes = ON;  -- 记录未使用索引的查询

-- 查看慢查询日志位置
SHOW VARIABLES LIKE 'slow_query_log_file';

6.2 SQL 优化技巧

-- 1. 只查需要的列(不要 SELECT *)
-- ❌ 差
SELECT * FROM users WHERE age > 18;
-- ✅ 好
SELECT id, username, email FROM users WHERE age > 18;

-- 2. 用 LIMIT 限制返回行数
SELECT * FROM logs ORDER BY id DESC LIMIT 100;

-- 3. 用 EXISTS 代替 IN(子查询结果集大时)
-- ❌ 差
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
-- ✅ 好
SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);

-- 4. 批量操作
-- ❌ 差:1000次单独插入
INSERT INTO users (name) VALUES ('张三');
INSERT INTO users (name) VALUES ('李四');
-- ✅ 好:1次批量插入
INSERT INTO users (name) VALUES ('张三'), ('李四');

-- 5. 避免使用 SELECT DISTINCT
-- 很多时候可以用 GROUP BY 代替
SELECT DISTINCT user_id FROM orders;  -- 可能慢
SELECT user_id FROM orders GROUP BY user_id;  -- 可能更快

-- 6. 优化分页查询(深分页问题)
-- ❌ 差:OFFSET 越大越慢
SELECT * FROM orders ORDER BY id LIMIT 1000000, 10;
-- ✅ 好:记住上一页的最大ID
SELECT * FROM orders WHERE id > 1000000 ORDER BY id LIMIT 10;

6.3 数据库结构优化

-- 1. 分区表(适合大数据量)
CREATE TABLE logs (
    id INT,
    log_date DATE,
    content TEXT
) PARTITION BY RANGE (YEAR(log_date)) (
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION p2024 VALUES LESS THAN (2025)
);

-- 2. 分表策略
-- 水平分表:按用户ID哈希,分成 user_0, user_1, user_2...
-- 垂直分表:把不常用的列拆分到另一张表

-- 3. 使用覆盖索引
-- 索引包含了查询需要的所有列,不需要回表
CREATE INDEX idx_name_age ON users(name, age);
SELECT name, age FROM users WHERE name = '张三';  -- 覆盖索引,快

七、数据库安全与备份

7.1 用户权限管理

-- 创建用户
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password';

-- 授予权限
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost';
GRANT ALL PRIVILEGES ON mydb.* TO 'admin'@'%' WITH GRANT OPTION;

-- 撤销权限
REVOKE DELETE ON mydb.* FROM 'app_user'@'localhost';

-- 查看权限
SHOW GRANTS FOR 'app_user'@'localhost';

-- 删除用户
DROP USER 'app_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

7.2 备份与恢复

# 1. 使用 mysqldump 备份
# 备份整个数据库
mysqldump -u root -p mydb > mydb_backup.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql

# 备份特定表
mysqldump -u root -p mydb users orders > users_orders_backup.sql

# 只备份结构,不备份数据
mysqldump -u root -p --no-data mydb > mydb_structure.sql

# 只备份数据,不备份结构
mysqldump -u root -p --no-create-info mydb > mydb_data.sql

# 2. 恢复备份
mysql -u root -p mydb < mydb_backup.sql

# 3. 定时备份(使用 cron)
# 每天凌晨2点备份
0 2 * * * mysqldump -u root -p mydb > /backups/mydb_$(date +\%Y\%m\%d).sql

附:知识体系总结

数据库基础
├── SQL 语言
│   ├── DDL: CREATE, ALTER, DROP
│   ├── DML: INSERT, UPDATE, DELETE
│   └── DQL: SELECT (WHERE, JOIN, GROUP BY, HAVING, ORDER BY)
├── 表设计
│   ├── 数据类型选择
│   ├── 约束 (主键、外键、唯一、检查)
│   ├── 三大范式
│   └── 索引设计
├── 性能优化
│   ├── 索引优化(最左前缀、覆盖索引)
│   ├── SQL 优化(避免函数、类型转换、SELECT *)
│   └── 执行计划分析 (EXPLAIN)
├── 事务
│   ├── ACID
│   ├── 隔离级别
│   └── 锁机制
└── 管理
    ├── 用户权限
    └── 备份恢复

来源:
http://amwtm.cn/

相关文章
|
2月前
|
XML 前端开发 程序员
初级程序员必备的十大技能之 API 接口与前后端联调(一)
教程来源 http://qeext.cn/ 本文系统讲解API设计规范(RESTful/GraphQL)、HTTP协议核心(方法、状态码、头信息)、前后端联调流程及调试工具,助你打造标准化、高可用接口,打破前后端协作孤岛。
|
2月前
|
人工智能 自然语言处理 Java
Java做AI真不行?2026年最被低估的机会来了
Spring官宣集成DeepSeek,Java正式迈入AI驱动时代!2026年AI岗位缺口巨大,大厂招聘普遍要求大模型能力。Java团队借力Spring生态与JBoltAI等国产框架,可低门槛接入代码生成、RAG、Agent等全链路AI能力,实现差异化突围。(239字)
287 3
|
2月前
|
人工智能 Linux API
全平台零门槛:Win11、Mac、Linux 通用 Hermes Agent 安装教程
Hermes Agent是Nous Research开源的自进化AI助手(MIT协议),越用越懂你。支持多工具并行、自动记忆习惯,Python编写,v0.13.0版。兼容Win/macOS/Linux/Docker,国内用户可配清华镜像快速部署,需API密钥(如Kimi)。
|
人工智能 运维 关系型数据库
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
RDS AI 助手旗舰版在 RDS AI 助手专业版智能运维能力的基础上,提供灵活模型选择、智能模型路由、多模型灾备、API Key 集成等更自主可控、灵活便捷的模型服务,并支持纳管运维各类环境部署的数据库。
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
|
2月前
|
缓存 搜索推荐 网络安全
KKCE:如何解决网站打开慢的问题?
网站打开慢?别急着瞎优化!本文提供一套零门槛、可复用的排查—解决—维护全流程:先用测速工具+浏览器调试精准定位慢因(服务器/资源/网络/本地),再针对性优化(升配、压缩图片、开CDN、配缓存),最后定期测速清理。小白也能3步提速,稳保秒开!(239字)
565 9
|
3月前
|
JavaScript Android开发 数据安全/隐私保护
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
本教程基于Cocos Creator 3.8.8,详解iOS IPA打包全流程:含环境配置(Xcode、Apple开发者账号)、构建面板设置(包名、屏幕方向、签名等)、Xcode工程配置、Archive归档及IPA导出,并附常见报错解决方案,理论+实操结合,助力开发者高效上架。
459 8
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
|
3月前
|
人工智能 安全 机器人
阿里云JVS Claw:三分钟实现“养虾自由”,下载就能用,免安装的OpenClaw
阿里云推出JVS Claw——零代码AI智能体平台:https://t.aliyun.com/U/IJbaxg 三分钟手机“养虾”,24小时待命、越用越聪明。支持多端同步、云端沙箱安全隔离、自进化技能体系。现启动“创意技能大赏”征集活动,邀全民共建智能体生态!
575 3
|
1月前
|
人工智能 算法 安全
GEO优化:官网建设的重要性,如何铸就数字信任与增长引擎
生成式AI正推动SEO向GEO(生成式引擎优化)范式跃迁:核心目标从“抢排名”转向“成信源”。于磊首创“两大核心+四轮驱动”理论,确立官网为唯一信任锚点,以E-E-A-T具象化、结构化内容、意图关键词与精准引用,助企业构建AI时代数字竞争力。
232 3
|
2月前
|
安全 程序员 API
初级程序员必备的十大技能之规范编码与团队协作(二)
教程来源 http://oplhc.cn/ 本指南系统梳理代码审查(Code Review)核心实践:涵盖PR规范、多维检查清单(功能/质量/性能/安全/测试/文档)、建设性评论技巧、健康协作心态,以及README、代码注释、CHANGELOG等文档编写标准,助力团队高效交付高质量、可维护、安全的代码。
|
2月前
|
人工智能 运维 安全
让 AI 帮你运维 Elasticsearch:阿里云 ES Agent Skill 正式发布
阿里云Elasticsearch Agent Skill是一套面向AI编程助手的智能运维技能包,覆盖实例创建、故障诊断、网络配置三大核心场景。支持自然语言交互,自动校验参数、识别架构差异、执行幂等操作,并内置49条诊断规则与7套SOP,大幅提升ES运维效率与可靠性。
708 7