日常工作中需要注意的小细节
数据类型的优化
- 更小的数据类型通常更好,更小的数据类型通常更快,因为他们占用更少的cpu缓存、磁盘、内存。
- 简单就好,简单数据类型的操作通常需要更少的cpu周期。整形比字符操作代价更低,其实mysql提供了函数INET_ATON(varchar)和INET_NTOA(int)使ip地址和整数可以进行互相转换,当然ip地址转换为整数以后可读性会变差,这需要在二者之间做一个衡量。
- 尽量避免使用null。
- 使用枚举来代替字符串。
合理使用范式和反范式
数据库的3范式规定了数据库设计的准则,但是在实际工作中为了提升sql的执行效率,我们往往会打破一些数据库范式以使得sql执行能有更高的效率。
数据库的主键的设计
数据库主键可分为自然主键和代理主键:
自然主键:事务属性中的唯一标识。
代理主键:与业务无关的无意义的序列。
推荐使用代理主键,因为代理主键不与业务耦合,可维护性更高。
字符集的选择
- 如果存储的是英文数字,直接使用latin1,这会节省大量的存储空间。
- 如果存储的是中文,建议使用uft-8_mb4而非uft-8,因为使用utf-8的时候如果遇到需要使用3个字符储存的汉字会产生乱码。
存储引擎的选择
常用的数据库存储引擎分为InnoDB和MyISAM,mysql5.0以前默认使用MyISAM作为存储引擎,5.0以后默认使用InnoDB作为存储引擎,InnoDB支持事务,支持行级锁,MyISAM不支持事务,只支持表锁,大量select语句适合使用MyISAM,大量update、delete、insert适合使用InnoDB。