数据库的三范式及mysql的InnoDB 和MyISAM区别

记录些基础的东西

数据库设计三范式

在我们设计数据库时,要遵循最基本的三范式

第一范式:关系型数据库,每条字段信息不可分解,可以理解为数据都有原子性
举例:数据库中有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万,并发高
  • 安全性和可用性要求高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值