近日,笔者阅读了一些关于mysql的优化原则,及其影响mysql性能的因素,下面做一些讲解:
哪些数据不适合存在数据库中?
- 二进制数据(例如视频、图片、音频直接存放在磁盘中)
- 超大文本(如:小说文章等,如果存放在数据库中,会降低查询的效率,增加磁盘IO读写次数)
- 流水队列数据(一些系统中,每次交易,存放等都会产生流水队列数据,数据量非常庞大)
那些数据存放在cache(缓存)中?
- 系统的配置信息
- 活跃用户的基本数据(强调活跃)、活跃用户的定制化信息
- 基于时间段的统计数据(首页展示前一段时间的统计数据,可以存放在缓存当中,合理的使用缓存,大大的降低了磁盘的IO次数,从而提高性能)
减少数据库的交互次数
在这里我们列举一个n+1的问题,总所周知,在使用mybatis的时候当a对象中包含b对象(也就是一个对象存在一个关联对象),a对象列表中显示关联对象b的属性,使用一条sql去查询a对象,那么使用n条sql把n个对应的属性查出来(查询所有数据的时候会产生这样的问题)。
- 使用连接的