您的位置:首页 > 数据库 > MySQL

数据库的三范式及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冗余到相册表。

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万,并发高

安全性和可用性要求高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: