做了一个对这两个参数的测试。表有100万行,每行100左右。
select * from test_table order by a;
改sort_buffer_size的效果比较明显,改成256k时需要2分10秒,而是32M的时候只需要24秒。
read_rnd_buffer是在使用行指针排序之后,随机读用的。
把max_length_for_sort_data改成64,使得排序时不会读入整行,只用行指针排序,排序的时间缩短为7秒。但这时表实际上已经在内存中了,read_rnd_buffer应该没有起到多大的作用,修改之后时间都差不多。如果表的内容不在内存里,从硬盘读,就需要100万次随机读,等了将近10分钟,没有出来,于是放弃了。我想read_rnd_buffer_size可能能把1个小时的时间缩短成半个小时,但最终结果对于web运用仍然是不可接受的。因此read_rnd_buffer_size不需要设成很大的值。
还有一个read_buffer,据说目前只是MyISAM表用到,直接改变量的值看不出明显的效果。MyISAM的表的内容是缓存在系统cache中的,除了重启不知道有什么办法清除,所以没有做更多的测试。
分享到:
相关推荐
3. `read_rnd_buffer_size`:用于随机读取排序,16MB过大,建议改为8MB。 4. `table_open_cache`:初始设置为512较小,可以增加到2048,以缓存更多的打开表。 5. `max_allowed_packet`:从5MB提升到16MB,允许更大的...
- **read_rnd_buffer_size**:用于随机读取数据块的缓冲区大小,适用于不按顺序读取记录的情况。 - **binlog_cache_size**:二进制日志缓存大小,用于存储事务中的SQL语句信息,直到事务提交。 - **tmp_table_...
@@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @thread_stack )) / @giga_bytes AS MAX_MEMORY_GB; ``` 该语句首先定义了基本单位换算,...
5. read_rnd_buffer_size:与顺序读取相对应,当MySQL需要随机读取数据块时,如根据索引读取表数据,或与排序后的结果集进行JOIN操作,会使用read_rnd_buffer_size指定的内存区域。read_rnd_buffer_size缓冲区可以...
* read_rnd_buffer_size * sort_buffer_size * sql_auto_is_null * sql_big_selects * sql_buffer_result * sql_mode * sql_safe_updates * sql_select_limit * timestamp * tmp_table_size * updatable_views_with_...
3. **read_buffer_size** 和 **read_rnd_buffer_size**:用于读取和随机读取行的缓冲大小,可提高扫描大表的效率: ``` read_buffer_size = 1M read_rnd_buffer_size = 4M ``` 五、超时时间 1. **interactive_...
- **read_buffer_size**/`read_rnd_buffer_size`:分别用于顺序读取和随机读取操作。增大这些值可以提高读取操作的性能。 - **join_buffer_size**:控制连接操作中使用的缓冲区大小。增大该值可以提高连接操作的...
最后,不要忘记监控和调整其他可能影响性能的参数,如read_rnd_buffer_size、thread_stack等。定期分析性能指标,根据实际情况微调这些配置。 以上配置仅作为指导,实际应用中还需要根据服务器负载、数据库规模以及...
- **`read_rnd_buffer_size`**:随机读取操作的缓冲区大小,优化随机访问性能。 - **`tmp_table_size`**:用于存储临时表的内存空间大小,合理设置可避免频繁磁盘I/O,提高处理效率。 #### 批量插入与表优化 - **...
10. `read_buffer_size`和`read_rnd_buffer_size`:分别用于顺序读取和随机读取数据的缓冲区大小,影响查询效率。 11. `sort_buffer_size`:排序操作的缓冲区大小,用于ORDER BY和GROUP BY操作。 12. `join_buffer...
read_rnd_buffer_size=256K innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=1M innodb_buffer_pool_size=8M innodb_log_file_size=48M innodb_thread_concurrency=9 innodb_autoextend_increment=64 ...
读取缓冲区(`read_buffer_size`)的大小影响着单次顺序读取操作的效率,而随机读取缓冲区(`read_rnd_buffer_size`)则影响着按索引读取记录的效率。 - **调整顺序读取缓冲区**:通过调整`read_buffer_size`的值(如...
1.数据库配置 ... read_rnd_buffer_size = 2M myisam_sort_buffer_size = 64M tmp_table_size = 128M query_cache_size = 96M query_cache_type = 1 thread_cache_size = 8 max_connections = 4
9. `read_rnd_buffer_size`: 用于随机读取数据时的缓冲区大小,尤其是在执行`ORDER BY`操作时。适当设置可以减少磁盘I/O。 10. `log_slow_queries`: 开启慢查询日志,记录执行时间超过`long_query_time`秒的查询,...
11. **READ_BUFFER_SIZE** 和 **READ_RND_BUFFER_SIZE**: 影响顺序读和随机读的性能,根据工作负载调整。 12. **innodb_flush_method**: 控制InnoDB如何将数据刷新到磁盘,不同的方法对速度和数据安全性有不同的...
join_buffer_size和sort_buffer_size则分别用于优化联结操作和排序操作。为这些缓冲区分配合适的内存大小对于提高查询性能有着直接的影响。 除此之外,MySQL的一些变量,如max_connections(最大连接数)、table_...
2. 进程级别参数:sort_buffer_size、join_buffer_size、read_buffer_size 和 read_rnd_buffer_size 都是进程独享的参数,用于加速排序、表关联和数据加载操作。这些参数都可以直接在参数文件中调整,调整之后重启...
- **read_rnd_buffer_size**: 顺序读取数据时分配的缓冲区大小。 - **sort_buffer_size**: 排序操作时分配的缓冲区大小。 - **join_buffer_size**: 联接操作时分配的缓冲区大小。 - **thread_cache_size**: 线程缓存...