数据库的三范式及mysql的InnoDB 和MyISAM区别
2015-03-20 13:17
274 查看
记录些基础的东西
第一范式:关系型数据库,每条字段信息不可分解,可以理解为数据都有原子性
举例:数据库中有address这个字段,但我们常常将它分解为province,city,area,这样算是数据库第一范式
第二范式:在1NF的基础上,每条数据都是唯一的,也就是说每条数据都有primary key与其对应。要求实体的属性完全依赖于primary key。所谓完全依赖是指不能存在仅依赖主primary key一部分的属性
第三范式:在2NF的基础上,个人理解就是数据表中不能有冗余数据。
反三范式举例:
数据库中有张相册表ablum_info,相册表有主键id,然后相片中有自己的主键id,外键ablum_id,浏览次数view_count。然后我们需要得到某个相册的总浏览次数,我们可以通过sum(view_count)实现,但是我们经常是将view_count冗余到相册表。
事实并不是这样,mysql在高并发状态下性能瓶颈很明显,主要原因是锁机制导致的堵塞
MyISAM采用的是全表锁定,而InnoDB采用的是行级锁。行级锁要比表级锁更加耗内存。
但是在系统并发访问量较高时,InnoDB的性能要优于MyISAM 同时 。InnoDB的索引不仅缓存索引本身,也缓存数据,所以
InnoDB需要更大的内存。
选择合适的存储引擎是优化的第一步
次数,如com_select代表select执行的次数,以此类推。通过计算读类型和写类型的语句比例,即可粗糙的确定一个
读写比例。理想的读写比例是 100:1 当读写比例达到10:1时,就认为是以写为主的数据库了。一般来说,这个值在30:1左右。
R/w>100:1且update相对较少
并发不高,不需要事务
表数据量小
硬件资源有限
2 采用InnoDB引擎
R/w比较小,频繁更新大字段
表数据量超过1000万,并发高
安全性和可用性要求高
数据库设计三范式
在我们设计数据库时,要遵循最基本的三范式第一范式:关系型数据库,每条字段信息不可分解,可以理解为数据都有原子性
举例:数据库中有address这个字段,但我们常常将它分解为province,city,area,这样算是数据库第一范式
第二范式:在1NF的基础上,每条数据都是唯一的,也就是说每条数据都有primary key与其对应。要求实体的属性完全依赖于primary key。所谓完全依赖是指不能存在仅依赖主primary key一部分的属性
第三范式:在2NF的基础上,个人理解就是数据表中不能有冗余数据。
反三范式举例:
数据库中有张相册表ablum_info,相册表有主键id,然后相片中有自己的主键id,外键ablum_id,浏览次数view_count。然后我们需要得到某个相册的总浏览次数,我们可以通过sum(view_count)实现,但是我们经常是将view_count冗余到相册表。
InnoDB 和MyISAM
MyISAM快读,InnoDB完全的事务支持,前者注重性能,后者注重事务。事实并不是这样,mysql在高并发状态下性能瓶颈很明显,主要原因是锁机制导致的堵塞
MyISAM采用的是全表锁定,而InnoDB采用的是行级锁。行级锁要比表级锁更加耗内存。
但是在系统并发访问量较高时,InnoDB的性能要优于MyISAM 同时 。InnoDB的索引不仅缓存索引本身,也缓存数据,所以
InnoDB需要更大的内存。
选择合适的存储引擎是优化的第一步
R/W概念,读写比概念
在数据库中执行 show global status得到系统的当前状态。在这些变量中, 形如com_xxx语句表示XXX语句执行的次数,如com_select代表select执行的次数,以此类推。通过计算读类型和写类型的语句比例,即可粗糙的确定一个
读写比例。理想的读写比例是 100:1 当读写比例达到10:1时,就认为是以写为主的数据库了。一般来说,这个值在30:1左右。
选择存储引擎的基本原则:
1 采用MyISAM 引擎R/w>100:1且update相对较少
并发不高,不需要事务
表数据量小
硬件资源有限
2 采用InnoDB引擎
R/w比较小,频繁更新大字段
表数据量超过1000万,并发高
安全性和可用性要求高
相关文章推荐
- mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
- 数据库mysql的innodb,myisam的引擎的区别
- mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
- MySQL 数据库中MyISAM 和 InnoDB 的区别
- mysql中engine=innodb和engine=myisam的区别
- mysql中MyISAM和InnoDB的区别
- mysql数据据存储引擎InnoDB和MyISAM的优势及区别
- MySQL myisam和innodb区别
- mysql数据据存储引擎InnoDB和MyISAM的优势及区别
- mysql数据据存储引擎InnoDB和MyISAM的优势及区别
- mysql myisam innodb 区别
- MySQL myisam和innodb区别
- mysql innodb 和myisam的区别
- mysql学习笔记 ----外键.myisam和innodb的区别
- mysql存储引擎:InnoDB和MyISAM的区别与优劣
- mysql中engine=innodb和engine=myisam的区别
- mysql myisam innodb 区别
- Mysql innodb引擎和myisam引擎使用索引区别
- MYisam和InnoDB区别以及MySQL引擎简介
- MySQL: MyISAM和InnoDB的区别