首页 > 代码库 > MySQL性能优化(一)-- 存储引擎和三范式

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 QQ
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性能优化(一)-- 存储引擎和三范式