免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1276 | 回复: 0
打印 上一主题 下一主题

关于MySQL表设计应该注意的问题[08年月10月刊] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-12 17:25 |只看该作者 |倒序浏览
Cu网友:杨涛
1.  慎重选择表名。
有两种选择:
A. 按照多数开发语言的命名规则。比如(myCustomer)。
B. 按照多数开源思想命名规则。比如(my_customer)。
C. 按照咱们中国人的思想。比如(我的客户)。
第一种有个缺点,很容易忘掉大写的字母。
第二种则比较好,每个WORD间用下划线连接,避免遗忘。
第三种建议不要用,虽然很好记。不觉得解析这个表的时候还需要编码转化吗?我个人理解,大家可以补充。
2.  关于编码的设定。
AGBK/GB2312.(适用于纯中文存储)。
BUTF8.(适用于中英文混合存储)。
CLATIN1。(适用于纯英文存储)。
3.  关于表引擎的选择。
A.MYISAM.(很多人说她的表级锁定会带来好多问题,其实只要设计好对应的表以及写好对应的SQL查询就没有那么大的问题。)
B. INNODB. (如果要用到事务,选择她不会错。至于多数人讲的MASTER/SLAVE结构上用INNODBMASTER的选择是否正确,就要看你怎么用了。不能一味的疯狂使用INNODB。)
C. CSV. (以前我写过文章,关于这个引擎。个人觉得最主要的是来存储少量数据以及从EXCELMYSQL的转换方面会很有用。当然只要涉及到规则数据的导入,她就可以办到。)
D.BLACKHOLE. (觉得最完美的用处在于MASETR/SLAVE上面,并且MASTER是一个临时的专门负责写的机器。)。
E.MEMORY. (应该说是MYISAM的兄弟了。不过在读内存总比读磁盘的速度要快。)。
F.FEDERATED. (典型的分布式引擎。我以前文章中有介绍。)
G. NDB。(网络版存储引擎,在高并发,大数据量的时候用。)
H. FOLCON
。(6.0后用来代替INNODB的引擎。)
I.其他旧的以及新开发的引擎具体介绍:http://dev.mysql.com/doc/refman/6.0/en/storage-engines.html)。
4.  关于属性数据类型的选择。
A. INT(一个字节的TINYINT,两个字节的SMALLINT,三个字节的MEDIUMINT,四个字节的INT8个字节的BIGINT。)
B.少于10个字符用CHAR是在合适不过了。
C.我一般用DECIMAL或者NUMERIC来代替FLOAT 或者DOUBLE。(DECIMAFLOAT(P)是动态存储。比如ECIMAL(10,2)占用5个字节。FLOAT4个字节,)
D. BLOGTEXT,VARCHAR(一般存放文章内容,特别是新闻网站。需要的字节数是所存储的字符长度+1。)
E.ENUM(在一定范围内绝佳的代替VARCHARCHAR的工具,因为她只占一到两个字节。)
F. 时间和日期类型(占3个字节的DATE8个字节的DATETIME4个字节的TIMESTAMP3个字节的TIME1个字节的YEAR。)。如果要存储比如‘1983’这样的年份,用YEAR明显比VARCHAR或者CHAR要节省空间。因为后者要占5个字节。
G.BOOLEAN(用来存储YES或者NO之类的值,占用一个字节。)
H.关于自增字段。目前我们的项目中涉及到好多ORDER BY RAND()操作。此类语句在数据库并发大的时候会造成CPU严重阻塞,持续产生数据库死锁!解决此类问题最好的办法就是利用自增字段,用程序随即生成数字序列,或者在数据库端随即生成数字序列。
I. 关于ZEROFILL。非常好用的前置填补0的存储,而不是用用对应个数的空串来代替。在需要前置补零的操作中INT ZEROFILL可以用来代替CHAR或者VARCHR
5.  关于默认值。
A.5.0之后,只要设定字段为NOT NULL,系统自动给出默认值。对应CHAR->’’,INT->0,BOOLEAN->0等等。
B.5.0之前的版本,需要手动指定默认值,否则会出现一定的异常。到时候查都不好查了。
6.  关于多数据库建立。
A. 应该把对应的业务放在各自不同的数据库里,而不是所有业务放到一个库里面。
B. 数据库的命名和表命名一样。
7.  关于索引。
A.设计表初期尽量考虑到应该建立的索引。所有建立的索引一定要测试一下,看是否有必要,否则会翻倍的减少写数据的性能。
B. 对于只有存储0或者1的列,尽量干掉索引,单独分出两个表。一个代替0,另外一个代替1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP