暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 每日挑战|20230131

原创 金缘 2023-01-31
305

以下关于缓存的服务器配置参数描述,正确的是?ABCFG
A read_buffer_size:读入缓冲区大小。查询需要使用时才分配内存,一次性分配内存大小。
B table_definition_cache:表定义缓存。缓存表的定义、描述符等的文件数量。可以被所有连接共享。
C thread_cache_size:线程缓存。可以保存在缓存中的线程数。关闭时才在缓存中增加线程,创建连接时才从缓存中删除线程。
D table_open_cache:打开表的缓存数量。可以被所有连接共享。
E sort_buffer_size:查询SQL连接第一次需要排序时分配的内存空间。会根据排序大小分配对应的内存空间。
F key_buffer_size:键缓存。设置索引块缓存大小。只可以缓存MYISAM表的索引。被所有线程共享。
G read_rnd_buffer_size:随机读缓冲区大小。每个线程连接独自使用。查询需要使用时才分配内存,只会分配需要的内存大小。
H join_buffer_size:协助完成JOIN操作的缓存区。作用为减少驱动表和被驱动表的读取次数。设置的值大小对性能影响不大。

答案解析

key_buffer_size:只可缓存MYISAM表的索引。被所有线程共享。
table_open_cache:打开表的缓存数量。每个连接各用自己的缓存空间,类似于ORACLE的PGA。
table_definition_cache:表定义缓存。可以被所有连接共享。
thread_cache_size:线程缓存。下次连接关闭时生效。关闭时才在缓存中增加线程,创建连接时才从缓存中删除线程。
sort_buffer_size:connection级的参数。每个连接第一次需要使用这个BUFFER的时候分配内存,一次性分配全部内存大小。
read_buffer_size:MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。
read_rnd_buffer_size:是MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度。MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。只会在查询需要使用时才为该缓存分配内存,并且只会分配需要的内存而不是全部指定大小。
join_buffer_size:为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作,然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论