MySQL性能优化-- 存储引擎和三范式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL性能优化-- 存储引擎和三范式相关的知识,希望对你有一定的参考价值。
一、mysql存储引擎
二、存储引擎如何选择
- 是否支持事务
- 检索和添加速度
- 锁机制
- 缓存
- 是否支持全文索引
- 是否支持外键
三、MyISAM和InnoDB对比
四、什么时候使用MyISAM和InnoDB
MyISAM:读事务要求不高,以查询和插入为主,例如各种统计表。
InnoDB:对事务要求高,保存的是重要的数据,例如交易数据,支付数据等,对用户重要的数据,建议使用InnoDB。
五、配置和数据文件
1.配置文件默认位置
Linux: /etc/my.cnf
Windows: my.ini
2.数据文件位置
1) 查看数据文件位置的命令: show variables like ‘%datadir%‘ ;
2) 数据文件格式:
InnoDB:frm(存储的表结构)、ibd(存储的数据和索引)
MyISAM:frm(存储的表结构)、MYD(存储的数据)、MYI(存储的索引)
六、数据库表设计
1).范式概念
1NF:列不可分。每一列都是不可分割的基本数据项
2NF:1NF的基础上面,非主属性完全依赖于主关键字
3NF:属性不依赖于其它非主属性 , 消除传递依赖
2).1NF
假设我们有一个学生表,字段包括:id,name,age,contact,如下:
id | name | age | contact |
1 | 张三 | 20 | phone:053756666;QQ:100001 |
2 | 李四 | 19 | phone:053757777;QQ:100002 |
当我们需要根据QQ来查询学生的时候,就查询不出,所以以上的设计就不符合1NF。我们可以将contact字段拆分为phone和QQ:
id | name | age | phone | |
1 | 张三 | 20 | 053756666 | 100001 |
2 | 李四 | 19 | 053757777 | 100002 |
3).2NF
假设我们有一个订单表,字段包括:id,productId,price,num,productName,如下:
id | productId | price | num | productName |
1 | 101 | 20 | 10 | 圆珠笔 |
1 | 102 | 18 | 20 | 笔记本 |
订单中,一个订单会有多个商品、明细。
未完成…………………………………………………………………………
以上是关于MySQL性能优化-- 存储引擎和三范式的主要内容,如果未能解决你的问题,请参考以下文章