本文主要介绍通过使用缓存的方式 来屏蔽磁盘I/O对 数据库语句性能的影响。
主要通过在数据库server启动时设置选项 innodb_buffer_pool_size来实现。
关于innodb_buffer_pool_size:
Command-Line Format | --innodb_buffer_pool_size=# | ||
Option-File Format | innodb_buffer_pool_size | ||
Option Sets Variable | Yes, innodb_buffer_pool_size | ||
Variable Name | innodb_buffer_pool_size | ||
Variable Scope | Global | ||
Dynamic Variable | No | ||
| Permitted Values (<= 5.1.27) | ||
Type | numeric | ||
Default | 8388608 | ||
Min Value | 1048576 | ||
| Permitted Values (>= 5.1.28) | ||
Platform Bit Size | 32 | ||
Type | numeric | ||
Default | 134217728 | ||
Range | 1048576 .. 2**32-1 | ||
| Permitted Values (>= 5.1.28) | ||
Platform Bit Size | 64 | ||
Type | numeric | ||
Default | 134217728 | ||
Range | 1048576 .. 2**64-1 |
在数据库server启动选项中设置的 innodb_buffer_pool_size, 默认的大小在32位和64位的机器上都是大约128M。 通常最好是你所处理的数据表的几倍,这样才能确保把整个表都缓存进去。
内存如果比较大的话
然后启动数据库后通过 select * from 【需要处理的表】。 先把表缓存起来。
之后再执行语句查询语句效率就会提高很多,因为基本无需再通过磁盘I/O去读取数据了,可以直接通过缓存。