Regardless of whether you want to use table partioning or not, you have to use InnoDB. Well OK, you don't HAVE to, but seriously, MyISAM is not an option.
It does not support transactions, so the following (pseudo-code, not real MySQL syntax):
START TRANSACTION;
ADD HOST 1;
ADD HOST 2;
ADD HOST 3;
ADD HOST 1;
ADD HOST 4;
COMMIT TRANSACTION;
If the second addition of host 1 would fail (because of any error, such as host already exists as we've already created it), the transaction will have been executed half-way when you use MyISAM, meaning hosts 1, 2 and 3 would exist, host 4 would not.
If this happens on InnoDB, none of the hosts will have been added, as the transaction is an atomic operation, so restarting it is safe.
I'm sure you can see why this can seriously mess up the database, it's probably why so many people have issues.
It does not support transactions, so the following (pseudo-code, not real MySQL syntax):
START TRANSACTION;
ADD HOST 1;
ADD HOST 2;
ADD HOST 3;
ADD HOST 1;
ADD HOST 4;
COMMIT TRANSACTION;
If the second addition of host 1 would fail (because of any error, such as host already exists as we've already created it), the transaction will have been executed half-way when you use MyISAM, meaning hosts 1, 2 and 3 would exist, host 4 would not.
If this happens on InnoDB, none of the hosts will have been added, as the transaction is an atomic operation, so restarting it is safe.
I'm sure you can see why this can seriously mess up the database, it's probably why so many people have issues.
I had to create the images table for zabbix_temp, since images.sql only inserts the data. I pulled this from schema.sql:
Comment