回 帖 发 新 帖 刷新版面

主题:MYSQL设计数据结构时需要注意问题

以下是本人的一些分享,我热爱编程,希望能多交编程的爱好者,如果你也是其中一名,那么请加好友,大家关注一下,下面的文章是自己觉得一些有用的东西,留下来给自己当笔记,当然也希望能帮助到你,首先感谢你的阅读~!
在设计数据结构时需要注意:

1、永远为表设定一个自增主键ID,并尽可能的利用此ID进行构造

(在配置表中)尽可能的用上unsigned,并尽可能的小。能用tinyint(1字节)、smallint(2字节)、mediumint(3字节),就不用int(4)字节

2、尽可能的使用ENUM,比如性别,属相等,因ENUM是保存为tinyint

3、尽可能的使用not null,除非业务需要使用null

4、把IP地址存为int unsigned ,使用 inet_aton() 和 inet_ntoa() 来进行转换

5、尽量使用短的字符类型

6、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB 会认为表是static类型,如果有固定长度和非固定长度的字段尽量采用垂直分割,将表分割。

静态类型的表有以下特点:

a、非常快,由于是固定长度,DB很容易计算出下行的偏移量,所以读取速度会很快,如果不是固定长度,要找到下行数据必须找到主键(这也是主键使用自增ID的重要的原因)

b、容易缓存

c、崩溃后容易重建,因为行是在固定位置

d、比变长需要更多的磁盘空间

e、一般不用优化,除非删除了大量数据,采用optimize table 进行优化

7、垂直分割是把1张表的信息分割成几张表,应注意以下几点

a、尽量把固长和非固定长度的字段分离

b、经常使用和非经常使用的字段分离

c、频繁更新和更新不频繁的字段分离(比如登录时间等),因为表的更新会释放掉表的缓存,如果更新频繁,基本上就用不上缓存。

d、拆分出去的字段,不能经常做join操作,否则性能比不拆分还要下降的多。

9、水平分割

a、设计时备份表和业务表进行分库。这样在做数据库迁移、备份、恢复时往往会有比较好的效果

b、数据量很大的时候,可以将一张表的数据分发到小表中去,以提高插入,查询的效率(比如原始数据的汇集)

8、选择正确的存储引擎

a、MYISAM 适合用在业务量小,更新操作不频繁且不需要事务的应用

b、INNODB 使用在更新操作频繁,需要事务的应用
我们在通过不间断地学习,才能获取真正的知识,从来不满足现在所拥有的知识,不断进取是根本,在编程的世界里也是这样,我喜欢获得新的知识,为获得新的知识兴奋,希望你也是一样,学无止境!!!http://www.jvtarena.com/ 



回复列表 (共1个回复)

沙发

不错 学习了www.0851sizu.com

我来回复

您尚未登录,请登录后再回复。点此登录或注册