1, innodb_buffer_pool_size
用于缓冲表及其索引的内存区大小, 象Oracle中的DB_CACHE_SIZE, 这个比较容易理解.
2, innodb_log_file_size
每个日志文件的大小, Oracle在这个默认值上, 不同的版本变化很多. 真实的应用中, 从20M到2G都有人用, 自已选吧. 我现在并没有看到什么Checkpoint的概念, 不知道大小对于MySQL有多大的影响?
3, innodb_log_buffer_size
相当于Oracle中的LOG_BUFFER参数, 不过MySQL每秒种都会将日志缓冲区的内容写入日志文件, 因此不用设多大.
4, innodb_flush_logs_at_trx_commit
这个参数用于控制在用户发出提交(Commit命令)时, MySQL如何处理日志缓冲中的内容. 在默认情况下, MySQL会每秒种将日志文件强行刷新到磁盘, 由于日志文件还受操作系统文件缓冲的控制, 因此在写时就可以分为两步了, 第一步是写入日志文件, 写到文件缓冲就算成功, 第二步将日志文件刷到磁盘, 真正写入磁盘. 这个值有三个值可以选:
0 : 用户提交时不做动作, 由MySQL每秒种写入日志文件并和磁盘同步.1 : 提交时写日志文件, 并将日志文件和磁盘同步, Oracle的默认值.2 : 提交时写日志文件, 但和磁盘的同步交给MySQL来每秒种进行.
5, innodb_fast_shutdown
这个我不是很明白, 什么是Full Purge? 什么是Insert Buffer Merge? 为0时要做这两个操作, 为1时不做这两个操作, 为2时只将Log文件写入磁盘.
6, innodb_max_dirty_pages_pct
dirty buffer最多能占的比率, 象Oracle中的某些参来控制checkpoint的频率, 默认值为90%也太高了吧?
7, innodb_thread_concurrency
设为CPU+Physical Disk的总数, 默认值为8, 估计改不改影响不会很大.
留言 (2)
Full Purge即把所有脏页都写回去,Insert Buffer是MySQL用于提高插入性能的技术,工作原理是当插入新的记录时,并不是马上插入到B+树中去,而是新缓存在一个内存空间中,过一段时间再批量按索引键的顺序插入,这样就可以消除更新索引时对索引的随机访问。Insert Buffer Merge即将Insert Buffer中的记录全部插入到B+树索引中去
Posted by 风轻扬 | Apr 4, 2007 12:58 PM
谢谢你的回答, 随便再问一个问题:
innodb_max_dirty_pages_pct 这个参数设得低一些是不是就可以加快full purge的速度?
Posted by anysql | Apr 4, 2007 1:09 PM