Commit 9ff9250e authored by jackfrued's avatar jackfrued

更新了数据库和电商项目文档

parent 340b91b6
This diff is collapsed.
## MySQL相关知识
### 存储引擎
1. InnoDB
2. MyISAM
### 数据类型
### 索引
#### 索引的类型
1. B-Tree索引
2. HASH索引
3. R-Tree索引(空间索引)
4. Full-text索引(全文索引)
### 视图
查询的快照,可以将访问权限控制到列上。
```SQL
create view ... as select ...
drop view ...
```
### 存储过程
```SQL
create procedure ... (params)
begin
...
end;
call ...
```
```Python
cursor.callproc('...')
```
### 触发器
不能用,因为多个行锁可能直接升级为表锁,导致性能低下。
### 事务控制
### SQL注入攻击
### 数据分区
### SQL优化
#### 优化步骤
1. 通过`show status`了解各种SQL的执行频率。
```SQL
show status like 'com_%';
show status like 'innodb_%';
show status like 'connections';
show status like 'slow_queries';
```
2. 定位低效率的SQL语句 - 慢查询日志。
```SQL
show processlist
```
3. 通过`explain`了解SQL的执行计划。
- select_type:查询类型(simple、primary、union、subquery)
- table:输出结果集的表
- type:访问类型(ALL、index、range、ref、eq_ref、const、NULL)
- possible_keys:查询时可能用到的索引
- key:实际使用的索引
- key_len:索引字段的长度
- rows:扫描的行数
- extra:额外信息
4. 通过`show profiles``show profile for query`分析SQL。
#### SQL优化
1. 优化insert语句
2. 优化order by语句
3. 优化group by语句
4. 优化嵌套查询
5. 优化or条件
6. 优化分页查询
7. 使用SQL提示
- USE INDEX
- IGNORE INDEX
- FORCE INDEX
#### 配置优化
1. 调整max_connections
2. 调整back_log
3. 调整table_open_cache
4. 调整thread_cache_size
5. 调整innodb_lock_wait_timeout
#### 架构优化
1. 通过拆分提高表的访问效率
- 垂直拆分
- 水平拆分
2. 逆范式理论
- 数据表设计的规范程度称之为范式(Normal Form)
- 1NF:列不能再拆分
- 2NF:所有的属性都依赖于主键
- 3NF:所有的属性都直接依赖于主键(消除传递依赖)
- BCNF:消除非平凡多值依赖
3. 使用中间表提高统计查询速度
### 数据备份
#### 导入和导出
1. select ... into outfile ...
2. load data infile ... into table ...
3. mysqldump
4. mysqlimport
#### ibbackup工具
#### xtrabackup工具
### 主从复制
### 集群
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment