一、MySQL 核心知识体系
1. 存储引擎(Storage Engine)
引擎 | 事务支持 | 锁机制 | 全文索引 | 外键 | 适用场景 |
---|---|---|---|---|---|
InnoDB | 支持 | 行级锁 | 8.0+ | 支持 | 高并发、事务型应用(推荐默认) |
MyISAM | 不支持 | 表级锁 | 支持 | 不支持 | 只读/读多写少场景 |
Memory | 支持 | 表级锁 | 不支持 | 不支持 | 临时数据、缓存 |
Archive | 不支持 | 行级锁(仅插入) | 不支持 | 不支持 | 日志类归档数据 |
CSV | 不支持 | 表级锁 | 不支持 | 不支持 | 数据交换(导出导入) |
查看支持的引擎:
SHOW ENGINES;
查看默认引擎:
SHOW VARIABLES LIKE 'default_storage_engine';
2. 事务(Transaction)
ACID 特性
特性 | 说明 |
---|---|
原子性(Atomicity) | 要么全部成功,要么全部回滚 |
一致性(Consistency) | 数据库状态从一个一致状态到另一个一致状态 |
隔离性(Isolation) | 多个事务互不干扰 |
持久性(Durability) | 提交后永久保存 |
事务控制命令
START TRANSACTION; -- 或 BEGIN
-- 执行 SQL 操作
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务
自动提交设置
SELECT @@autocommit; -- 查看当前状态(1=开启,0=关闭)
SET autocommit = 0; -- 关闭自动提交(开启显式事务)
SET autocommit = 1; -- 开启自动提交(默认行为)
DML(INSERT/UPDATE/DELETE)默认是隐式事务,每条语句自动提交。
3. 事务隔离级别与并发问题
隔离级别 | 脏读 | 不可重复读 | 幻读 | 性能 |
---|---|---|---|---|
READ UNCOMMITTED | √ | √ | √ | 最高 |
READ COMMITTED | X | √ | √ | 中等 |
REPEATABLE READ | X | X | √(InnoDB 通过 MVCC + 间隙锁解决) | 较低 |
SERIALIZABLE | X | X | X | 最低 |
🔧 设置隔离级别:
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- 可选:READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE
InnoDB 默认隔离级别为:
REPEATABLE READ
,但通过 MVCC(多版本并发控制) 和 间隙锁(Gap Lock) 有效减少了幻读问题。
4. 索引(Index)
索引类型分类
分类方式 | 类型 |
---|---|
数据结构 | B-Tree(默认)、Hash(Memory引擎)、Full-text |
物理存储 | 聚集索引(主键)、非聚集索引(二级索引) |
字段数量 | 单列索引、联合索引(组合索引) |
功能语义 | 主键索引、唯一索引、普通索引、全文索引 |
索引操作命令
-- 查看索引
SHOW INDEX FROM 表名;
-- 创建索引
ALTER TABLE 表名 ADD PRIMARY KEY(字段); -- 主键
CREATE UNIQUE INDEX idx_name ON 表名(字段); -- 唯一
CREATE INDEX idx_multi ON 表名(col1, col2); -- 联合
CREATE FULLTEXT INDEX idx_ft ON 表名(文本字段); -- 全文(仅 MyISAM / InnoDB 5.6+)
-- 删除索引
DROP INDEX 索引名 ON 表名;
ALTER TABLE 表名 DROP PRIMARY KEY; -- 删除主键
索引优缺点
优点 | 缺点 |
---|---|
提高查询效率 | 占用磁盘空间 |
加速排序、分组 | 插入/更新/删除变慢(需维护索引树) |
支持唯一性约束 | 过多索引影响性能 |
索引设计原则
- 为频繁查询的字段建立索引(如 WHERE、JOIN、ORDER BY)
- 选择高区分度字段(如用户ID > 性别)
- 联合索引遵循最左前缀匹配原则
- 避免在低基数字段上建索引(如 status=0/1)
- 避免过度索引,尤其是小表
5. 视图(View)
概念
- 虚拟表,基于 SQL 查询结果集
- 不存储数据,只存储定义
- 可简化复杂查询、提升安全性
常用命令
-- 创建视图
CREATE VIEW v_user_orders AS
SELECT u.name, o.amount FROM users u JOIN orders o ON u.id = o.user_id;
-- 使用视图
SELECT * FROM v_user_orders;
-- 修改视图(替换定义)
CREATE OR REPLACE VIEW v_user_orders AS ...;
-- 删除视图
DROP VIEW v_user_orders;
-- 查看视图结构
DESC v_user_orders;
SHOW CREATE VIEW v_user_orders;
注意:某些视图不可更新(含聚合、JOIN、DISTINCT 等)
6. 数据库设计:ER 模型与范式
ER 模型三要素
元素 | 图形表示 | 说明 |
---|---|---|
实体(Entity) | 矩形 | 如:学生、课程 |
属性(Attribute) | 椭圆 | 如:学号、姓名 |
关系(Relationship) | 菱形 | 如:选课(多对多) |
实体 → 表;属性 → 字段;多对多关系 → 中间表
三大范式(1NF → 3NF)
范式 | 要求 |
---|---|
1NF | 所有字段都是原子值,不可再分(如不能有“爱好: 篮球,音乐”) |
2NF | 在 1NF 基础上,消除非主属性对主键的部分依赖(适用于复合主键) |
3NF | 在 2NF 基础上,消除非主属性对主键的传递依赖(如 A→B→C,则 C 依赖 A 是间接的) |
实际开发中,一般满足 3NF 即可,有时为提升性能会反范式化(如冗余字段)
二、FineBI 商业智能入门
1. BI 概述
- BI(Business Intelligence):商业智能,用于数据分析与决策支持
- 核心功能:报表、仪表板、可视化、数据钻取、预警
2. FineBI 简介
- 纯 B/S 架构(浏览器访问)
- 零客户端安装,支持跨平台使用
- 支持多种数据源:MySQL、Oracle、Excel、SQL 自定义等
3. FineBI 架构对比
对比项 | B/S 架构(FineBI) | C/S 架构(传统客户端) |
---|---|---|
访问方式 | 浏览器访问 | 安装本地程序 |
维护成本 | 低(服务端统一升级) | 高(每台电脑更新) |
响应速度 | 相对较慢 | 快 |
安全性 | 中等(依赖网络) | 高(本地控制) |
跨平台 | 支持 | 通常仅限 Windows |
4. 数据准备流程
支持的数据源
- 数据库表(MySQL、Oracle 等)
- SQL 数据集(自定义查询)
- Excel 文件上传
- 自主数据集(数据清洗、合并)
连接步骤(以 Excel 为例)
- 管理系统 → 数据连接 → 新建连接
- 数据准备 → 添加分组 → 添加业务包
- 在业务包中添加表 → 选择 Excel 数据集
- 上传文件 → 预览数据 → 确认 → 更新业务包
重要提示:添加数据后务必点击“更新业务包”,否则无法在分析中使用!
5. 核心概念:维度 & 指标
概念 | 说明 | 示例 |
---|---|---|
维度(Dimension) | 分析角度 | 年份、地区、产品类别 |
指标(Measure) | 可度量的数值 | 销售额、订单数、利润率 |
📊 分析 = 维度 × 指标
6. 组件分析类型
组件类型 | 用途 | 操作步骤 |
---|---|---|
分组表 | 展示明细或汇总数据 | 拖入维度 + 指标 → 设置聚合方式 |
指标卡 | 显示关键指标总数 | 拖入单个指标(如 SUM(销售额)) |
图表组件 | 可视化展示(柱状图、折线图、饼图等) | 先做分组表 → 切换图表类型 |
数据钻取 | 下钻(细化)或上卷(汇总) | 点击维度层级展开,如 年 → 季 → 月 |
7. 仪表板制作流程
- 新建仪表板:仪表板 → 新建文件夹 → 新建仪表板
- 添加组件:新建分析组件 → 选择数据源 → 拖拽维度/指标
- 进入仪表板:右上角【进入仪表板】
- 布局调整:拖动组件位置、调整大小
- 添加文本说明:使用“文本组件”添加标题、注释
- 美化样式:选择内置主题模板,统一风格
🎨 建议:保持配色统一、图表简洁、重点突出
三、综合建议与最佳实践
MySQL 使用建议
- 默认使用 InnoDB 引擎(支持事务、外键、行锁)
- 合理使用索引,避免全表扫描
- 复杂查询封装成视图或存储过程
- 设计表结构时遵循 3NF,必要时适度反范式优化性能
FineBI 使用建议
- 数据源连接后及时“更新业务包”
- 优先使用 SQL 数据集 获取清洗后的数据
- 多利用“自主数据集”进行数据处理(过滤、计算字段)
- 仪表板命名规范,分类管理(按部门、主题等)
附录:常用命令速查表
功能 | 命令 |
---|---|
查看引擎 | SHOW ENGINES; |
查看默认引擎 | SHOW VARIABLES LIKE 'default_storage_engine'; |
查看事务自动提交 | SELECT @@autocommit; |
关闭自动提交 | SET autocommit = 0; |
设置隔离级别 | SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; |
查看索引 | SHOW INDEX FROM 表名; |
创建联合索引 | CREATE INDEX idx_name ON table(col1, col2); |
创建视图 | CREATE VIEW v_xxx AS SELECT ...; |
删除视图 | DROP VIEW v_xxx; |
: