I am MySQL on server with 6GB RAM. I need to know what is the difference between myisam_sort_buffer_size and sort_buffer_size?mysql
I have following size set to them:sql
myisam_sort_buffer_size = 8Msession
sort_buffer_size = 256Mapp
Please also mention if these values are fine or need adjustments?less
Thankside
A:post
sort_buffer_size:ui
MySQL documentation:this
Each session that needs to do a sort allocates a buffer of this size. sort_buffer_size is not specific to any storage engine and applies in a general manner for optimization.
Your sort_buffer_size value seems extremely high. The default is 2M. I'd recommend going no larger than that since there is a performance penalty for going higher. Some people recommend smaller values such as 256kB. One thing to remember is this is per-client-session, it's not a global value. Large values will add up fast.
myisam_sort_buffer_size:
MySQL documentation:
The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE.
Your myisam_sort_buffer_size seems fine. This won't be relevant unless you are rebuilding indexes using ALTER TABLE or REPAIR TABLE etc.
Each session that needs to do a sort allocates a buffer of this size. sort_buffer_size
is not specific to any storage engine and applies in a general manner for optimization. See Section 8.3.1.11, 「ORDER BY
Optimization」, for example.
If you see many Sort_merge_passes
per second in SHOW GLOBAL STATUS
output, you can consider increasing the sort_buffer_size
value to speed up ORDER BY
or GROUP BY
operations that cannot be improved with query optimization or improved indexing. The entire buffer is allocated even if it is not all needed, so setting it larger than required globally will slow down most queries that sort. It is best to increase it as a session setting, and only for the sessions that need a larger size. On Linux, there are thresholds of 256KB and 2MB where larger values may significantly slow down memory allocation, so you should consider staying below one of those values. Experiment to find the best value for your workload. See Section C.5.4.4, 「Where MySQL Stores Temporary Files」.
The maximum permissible setting for sort_buffer_size
is 4GB–1. As of MySQL 5.1.23, larger values are permitted for 64-bit platforms (except 64-bit Windows, for which large values are truncated to 4GB–1 with a warning).
The size of the buffer that is allocated when sorting MyISAM
indexes during a REPAIR TABLE
or when creating indexes with CREATE INDEX
or ALTER TABLE
.
The maximum permissible setting for myisam_sort_buffer_size
is 4GB–1. As of MySQL 5.1.23, larger values are permitted for 64-bit platforms (except 64-bit Windows, for which large values are truncated to 4GB–1 with a warning).
The maximum size of the temporary file that MySQL is permitted to use while re-creating a MyISAM
index (during REPAIR TABLE
, ALTER TABLE
, or LOAD DATA INFILE
). If the file size would be larger than this value, the index is created using the key cache instead, which is slower. The value is given in bytes.
The default value is 2GB. If MyISAM
index files exceed this size and disk space is available, increasing the value may help performance. The space must be available in the file system containing the directory where the original index file is located.
參考:
http://stackoverflow.com/questions/7871027/myisam-sort-buffer-size-vs-sort-buffer-size
https://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_myisam_max_sort_file_size