所谓的数据库的物理设计呢,就是根据所选择的关系型数据库的特点,对逻辑数据库中,所建立的模型,
进行具体的存储结构的设计,针对我们的MYSQL,进行物理设计阶段呢
主要包括以下的一些内容,首先定义数据库表,及字段的命名规范,接下来就是要选择合适的存储引擎,
为表中的字段建立合适的数据类型,以及建立数据表的具体的结构,现在我们依次来看一下每一项中,
所具体的工作
首先是定义数据库,表,字段的命名规范,我们当前的程序项目,开发往往是多个人协作完成的,
所以为了工作中的工作方便,我们就需要为数据库,表,字段,起名字呢,都有一个共同约定的规范,
这个就称之为命名规范,符合我们约定的命名规范呢,来建立数据库,表,在大家不用查看数据字典的情况下呢,
可以基本的知道,这个库表中,以及表中的字段中,大概的内容是什么,要做到这一点呢,我们在对数据库命名时呢,
有以下几个原则,首先第一个原则称之为可读性原则,而所谓的可读性原则呢,就是说,在对数据库起名时呢,我们应该
尽量的使名称有更好的可读性,比如使用下划线来分割不同的单词,或者对每个单词的首字母进行大写,不过要注意的
是,对于MYSQL来说,表名的大小写呢,是敏感的,所以我们使用大小写字母的方式呢,来区分命名不同的部分呢,可能会在
以后我们的使用中呢,造成不必要的麻烦,而第二个要遵守的规范呢,表意型原则,也就是在我们给命名时呢,应该给表起
有意义的名字,例如呢,我们刚才在设计订单表中,起名叫ORDER表,也可以起名为t1表,但是显然启用order这个命名呢,
要比t1更能够体现这种表中所存储的内容,所以我们要选中order这个表名,而数据库命名的最后一个原则呢,就称之为长
名性原则,而有些开发人员呢,进行命名时喜欢比较短的名字,这种命名方法呢,往往使得,名字无法体现出所代表的内容,
所以第三个原则实际上就是要求我们,在进行数据库对象命名时呢,尽量少的使用或者是不使用缩写,当然对象的名字也不能
太长,否则使用起来就不方便了,所以对于以上原则呢,还要把握一个适度的原则,按照物理设计的步骤呢,下面就要选择合适的
存储引擎了
前面的内容中呢,对于MYSQL常用的存储引擎,以及各自的特点呢,都做过一个详细的介绍,所以我们在这里
就不再做重复的说明了,下表列出了mysql存储引擎的特点,我们从这个表中也可以看出,我们的业务使用什么样的存储
引擎比较合适,下面我们简单地来看一下这张表
首先说一下MyISAM存储引擎,他呢是非事务的,并且它的锁粒度呢,是表级锁,它主要应用呢,是select和
insert这种场景下,忌用在读写比较频繁的表中,因为在读写比较频繁的表下呢,他很容易进行锁表,所以会
阻塞我们并发的查询,性能也不会太好,MRG_MYISAM呢,实际上和MYISAM是差不多的了,他只不过是把多个MYISAM
表呢,合成一个表来使用,所以他同样是支持表级锁的,它主要应用场景呢,主要用于分段归档啊,数据仓库的情况下,
而且禁用在全局查询过多的情况下,因为如果全局查询的多呢,性能就会很差,因为多个表查询之后再进行汇总,
而Innodb呢,同样我们说过了,它是支持事务的存储引擎,并且支持MVC的行级锁,主要应用场景呢,事务处理,当然了,
之前我们也说过,除了事务处理,实际上在大多数场景中呢,都可以使用Innodb,所以他的忌用场景是无,而Archive存储
引擎呢,它是不支持事务的,同样他的锁是行级锁,之前我们介绍过,他的主要适用场景呢,主要是用于日志记录,或者
只支持insert,和select操作,对于其他的delete,update操作呢,它是不支持的,所以如果想要用到随机读取,或者更新
删除,是不适合使用的,最后Ndb存储引擎,这个是MYSQL集群存储引擎,同样他支持行级锁,同样他的作用场景是高可用的场景,
但是要注意呢,当前NDB存储引擎呢,要求把数据呢,全部存储在内存中的,效率并不高,在大部分应用中是不建议使用的