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

简介: 教程来源 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月前
|
人工智能 安全 机器人
阿里云JVS Claw:三分钟实现“养虾自由”,下载就能用,免安装的OpenClaw
阿里云推出JVS Claw——零代码AI智能体平台:https://t.aliyun.com/U/IJbaxg 三分钟手机“养虾”,24小时待命、越用越聪明。支持多端同步、云端沙箱安全隔离、自进化技能体系。现启动“创意技能大赏”征集活动,邀全民共建智能体生态!
366 3
|
1月前
|
人工智能 安全 机器人
阿里云无影云电脑部署OpenClaw图文教程:QQ集成+千问Qwen3.6-Plus配置+新手避坑指南
2026年,OpenClaw(原Clawdbot)作为开源AI代理自动化框架的标杆产品,凭借轻量化部署、跨平台兼容、大模型生态完善、即时通讯集成便捷的核心优势,成为个人与团队搭建专属智能助手的首选方案。阿里云无影云电脑以云端桌面、随时随地访问、环境预置、安全稳定的特性,为OpenClaw提供7×24小时不间断运行的理想环境,彻底解决本地部署断电、断网、设备性能不足的痛点。搭配QQ深度集成,用户可通过QQ单聊、群聊随时随地与AI助手交互;配合阿里云千问Qwen3.6-Plus高性能大模型,实现智能对话、代码生成、任务自动化、文档处理、信息检索等全场景能力。本文全程提供可直接复制的代码命令,从阿里
531 10
|
23天前
|
JSON 小程序 前端开发
前端组件库——Vant Weapp知识点大全
教程来源 http://oplhc.cn/ Vant Weapp是有赞官方打造的高星(1.1w+)微信小程序UI组件库,轻量、稳定、高性能,含50+组件与CSS变量主题系统,支持按需引入与深度定制,是小程序开发首选开源UI方案。
|
22天前
|
移动开发 自然语言处理 小程序
前端组件库——Wot Design Uni知识点大全(三)
教程来源 https://rvtst.cn Wot Design Uni 是基于 Vue3 的跨平台 UI 组件库,支持微信/支付宝小程序、H5、App 等多端兼容;提供样式隔离修复、virtualHost 渲染优化、虚拟列表、按需引入、国际化(15+语言)等完整解决方案。
|
17天前
|
存储 数据采集 分布式计算
数据仓库是什么?数据仓库和大数据平台、数据湖、数据中台、湖仓一体有什么区别?
本文厘清数据仓库、大数据平台、数据湖、数据中台、湖仓一体五大核心概念的本质区别与适用场景,破除术语混淆误区。从架构定位、数据类型、建模方式、技术演进到典型优劣,逐一剖析,助你精准选型、科学设计、自信汇报。
|
2天前
|
人工智能 运维 安全
让 AI 帮你运维 Elasticsearch:阿里云 ES Agent Skill 正式发布
阿里云Elasticsearch Agent Skill是一套面向AI编程助手的智能运维技能包,覆盖实例创建、故障诊断、网络配置三大核心场景。支持自然语言交互,自动校验参数、识别架构差异、执行幂等操作,并内置49条诊断规则与7套SOP,大幅提升ES运维效率与可靠性。
131 7
|
23天前
|
JavaScript Android开发 数据安全/隐私保护
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
本教程基于Cocos Creator 3.8.8,详解iOS IPA打包全流程:含环境配置(Xcode、Apple开发者账号)、构建面板设置(包名、屏幕方向、签名等)、Xcode工程配置、Archive归档及IPA导出,并附常见报错解决方案,理论+实操结合,助力开发者高效上架。
192 8
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
|
22天前
|
算法 安全 测试技术
多智能体协同中的任务拆解与动作映射:关键指标对比与算法设计思路
本文聚焦2026年企业级多智能体落地核心瓶颈——任务拆解不准与语义到动作映射断层,提出“分层级树状拆解+分布式角色调度”算法及五维特征驱动的动作映射技术,构建可评估、可复用、强合规的工程化方案,并通过实测数据验证其在跨系统长链路任务中96.2%执行成功率与92.3%异常自修复率。