Schema与数据类型优化

Schema与数据类型优化

1、选择优化的数据类型

         应该尽量使用可以存储数据的更小的数据类型。更小的数据类型通常更快,占用更少的磁盘、内存、缓存。

2、简单最好

         整型比字符型要好,两个例子,应该使用Mysql内建的类型来存储日期而不是字符串;使用整形存储Ip地址。因为字符的校对、排序规则要复杂。

3、尽量避免使用Null。

         因为可为Null的列使得索引和索引统计和值的比较变得复杂。

4、整数类型

整数类型分为:tinyint、smallint、mediumint、int、bigint。Mysql可以整数类型制定宽度,但对大多数应用来说是没有意义的,对于存储和计算来说INT(1)和INT(20)是相同的。

5、实数类型

         因为CPU不支持对decimal的直接计算,因此Mysql5.0以上的版本中Mysql自己实现了Decimal的计算。Decimal需要额外的开销,只有需要精确计算时才选用。

         可以考虑用BigInt代替decimal,假设要存储的财务数据精确到万分之1,可以把所有金额乘以100万,然后将结果存储到bigint里面,这样可以同时避免浮点运算不精确和decimal精确计算代价高等问题。

6、字符串类型

         Varchar存储可变长字符串。

         当列的更新很少,使用了像UTF-8这样复杂的字符集时,使用varchar存储。

         Char类型是定长的,当存储MD5值,定长的值,或经常变更的数据时,用char存储,因为这样不容易产生碎片。

         数据如何存储取决于存储引擎。

7对Schema进行范式化也可以带来好处。范式化更新操作通常比反范式要快。范式化只有很少或没有重复数据。范式化的缺点是需要关联,这可能会使得一些索引策略无效。范式和反范式各有优劣,在实际中经常二者混用。

8、更快的读、更慢的写。

9、计数器表

如果在表中保存计数器,更新计数器时可能遇到并发问题?怎么办呢,可以设计成100行,每次更新计数器随机的选择一行进行更新,统计的时候计算sum就可以了。

10、加快ALTER TABLE的操作速度。

posted on 2016-01-05 18:42  随风浪子的博客  阅读(654)  评论(0编辑  收藏  举报

导航