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

简介: 教程来源 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/

相关文章
|
1月前
|
XML 前端开发 程序员
初级程序员必备的十大技能之 API 接口与前后端联调(一)
教程来源 http://qeext.cn/ 本文系统讲解API设计规范(RESTful/GraphQL)、HTTP协议核心(方法、状态码、头信息)、前后端联调流程及调试工具,助你打造标准化、高可用接口,打破前后端协作孤岛。
|
1月前
|
人工智能 自然语言处理 Java
Java做AI真不行?2026年最被低估的机会来了
Spring官宣集成DeepSeek,Java正式迈入AI驱动时代!2026年AI岗位缺口巨大,大厂招聘普遍要求大模型能力。Java团队借力Spring生态与JBoltAI等国产框架,可低门槛接入代码生成、RAG、Agent等全链路AI能力,实现差异化突围。(239字)
175 3
|
2月前
|
存储 人工智能 弹性计算
揭秘千问 APP 千万级 AI 订单背后的记忆存储实践
2026年春节,千问 APP “春节请客计划” 9 小时破 1000 万单,依赖 Tablestore 构建的一站式记忆系统:支持短期/长期记忆统一管理、毫秒级读写、Serverless 弹性伸缩、多模态数据融合及原生向量检索,实现数十亿条记忆的高效存储与实时流转。
612 118
|
29天前
|
人工智能 Linux API
全平台零门槛:Win11、Mac、Linux 通用 Hermes Agent 安装教程
Hermes Agent是Nous Research开源的自进化AI助手(MIT协议),越用越懂你。支持多工具并行、自动记忆习惯,Python编写,v0.13.0版。兼容Win/macOS/Linux/Docker,国内用户可配清华镜像快速部署,需API密钥(如Kimi)。
|
1月前
|
缓存 搜索推荐 网络安全
KKCE:如何解决网站打开慢的问题?
网站打开慢?别急着瞎优化!本文提供一套零门槛、可复用的排查—解决—维护全流程:先用测速工具+浏览器调试精准定位慢因(服务器/资源/网络/本地),再针对性优化(升配、压缩图片、开CDN、配缓存),最后定期测速清理。小白也能3步提速,稳保秒开!(239字)
378 9
|
人工智能 运维 关系型数据库
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
RDS AI 助手旗舰版在 RDS AI 助手专业版智能运维能力的基础上,提供灵活模型选择、智能模型路由、多模型灾备、API Key 集成等更自主可控、灵活便捷的模型服务,并支持纳管运维各类环境部署的数据库。
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
|
2月前
|
JavaScript Android开发 数据安全/隐私保护
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
本教程基于Cocos Creator 3.8.8,详解iOS IPA打包全流程:含环境配置(Xcode、Apple开发者账号)、构建面板设置(包名、屏幕方向、签名等)、Xcode工程配置、Archive归档及IPA导出,并附常见报错解决方案,理论+实操结合,助力开发者高效上架。
348 8
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
|
2月前
|
人工智能 安全 机器人
阿里云JVS Claw:三分钟实现“养虾自由”,下载就能用,免安装的OpenClaw
阿里云推出JVS Claw——零代码AI智能体平台:https://t.aliyun.com/U/IJbaxg 三分钟手机“养虾”,24小时待命、越用越聪明。支持多端同步、云端沙箱安全隔离、自进化技能体系。现启动“创意技能大赏”征集活动,邀全民共建智能体生态!
486 3
|
1月前
|
人工智能 运维 安全
让 AI 帮你运维 Elasticsearch:阿里云 ES Agent Skill 正式发布
阿里云Elasticsearch Agent Skill是一套面向AI编程助手的智能运维技能包,覆盖实例创建、故障诊断、网络配置三大核心场景。支持自然语言交互,自动校验参数、识别架构差异、执行幂等操作,并内置49条诊断规则与7套SOP,大幅提升ES运维效率与可靠性。
521 7
|
1月前
|
存储 人工智能 固态存储
阿里云4核云服务器租用价格解析:4核8G、4核16G、4核32G配置最新收费标准与活动价格
本文介绍了阿里云4核云服务器的配置选择、价格体系及购买策略。4核配置涵盖经济型e实例、通用算力型u2i/u2a、计算型c9i/c9a、通用型g9及内存型r9等多个实例族,分别适用于个人博客、企业Web应用、AI推理及大数据处理等场景。同时,文中列出了4核8G、16G、32G在各实例下的官方标准价及2026年活动价(如u2i实例4核8G低至1252.63元/年起)。建议用户根据业务需求选型,结合优惠券实现折上折,有效降低上云成本。