Your my.conf says the following: key_buffer_size=32M
That's really small. You could afford to set it higher: Run this query please:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA ) A,
(SELECT 2 PowerOf1024) B;
This will give you a recommended size of key_buffe_size. Please you common sense when setting this value.
Here is something else: I don't see a bulk_insert_buffer_size. The default is 8MB. Try setting it to 512MB:
[mysqld]
bulk_insert_buffer_size=512M
I just noticed your myisam_sort_buffer_size is only 300M. Set it to 4G (max value)
[mysqld]
myisam_sort_buffer_size=4G
Best Answer
No, HOT doesn't defragment pages. The cost of doing the needed index updates would be excessive.
PostgreSQL would write the new version of row 1 to a new page.