Ik heb 2 losstaande VPS'en die redelijk gelijke omstandigheden draaien (zelfde OS, zelfde CPU, memory etc..). Op de ene draait MariaDB 10.0.30, op de andere draait MySQL 5.5.47 . Nu gaan beide omgevingen totaal anders om met een redelijk simpele query met het resultaat dat de query op MariaDB er 9 seconden over doet en op MySQL nog geen 0.05 seconde.
Dit is de query:
Resultaat EXPLAIN op MySQL:
Resultaat EXPLAIN op MariaDB:
Ze geven beide een totaal ander resultaat. Mijn vraag is nu; ligt dit puur aan een andere omgeving: mariadb vs mysql? Dat lijkt mij namelijk niet... Of moet ik het eerder zoeken in de variabelen van MariaDB, en zo ja naar welke waardes moet ik dan kijken?
Als het nodig is om de structuur van de tabellen hier te posten hoor ik het wel, volgens mij is het niet nodig omdat het niet een query specifieke vraag is. Er zijn meerdere queries waarbij een groot verschil is tussen beide omgevingen. Maar het is niet zo dat MariaDB het voor alles verprutst. Sterker nog; op de MariaDB server draaien een aantal website helemaal vlekkeloos.
PS. Uiteraard zijn de tabellen op beide databases identiek gevuld, met dezelfde keys etc...
Dit is de query:
code:
1
2
3
4
5
6
7
8
9
| SELECT cb.*, COUNT(DISTINCT sp.product_id) as 'num_products', MIN(sp.price) AS 'min_price' FROM shop_product_category spc INNER JOIN shop_product sp ON sp.product_id = spc.product_id INNER JOIN shop_product_car spca ON spca.product_id = sp.product_id INNER JOIN cars_model cm ON cm.model_id = spca.model_id INNER JOIN cars_brand cb ON cb.brand_id = cm.brand_id WHERE spc.category_id='241' AND cb.active AND sp.active AND !sp.deleted AND !cm.deleted GROUP BY cb.brand_id ORDER BY cb.name ASC |
Resultaat EXPLAIN op MySQL:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | spc | ref | PRIMARY,category_id,product_id | PRIMARY | 4 | const | 6272 | Using index; Using temporary; Using filesort |
1 | SIMPLE | sp | eq_ref | PRIMARY | PRIMARY | 4 | hottnl_2016_dev.spc.product_id | 1 | Using where |
1 | SIMPLE | spca | ref | product_id_brand_id_model_id_type_id,product_id_type_id,product_id,model_id | product_id | 5 | hottnl_2016_dev.sp.product_id | 2 | Using where |
1 | SIMPLE | cm | eq_ref | PRIMARY,brand_id,model_id_active_deleted,brand_id_active_deleted | PRIMARY | 4 | hottnl_2016_dev.spca.model_id | 1 | Using where |
1 | SIMPLE | cb | eq_ref | PRIMARY | PRIMARY | 4 | hottnl_2016_dev.cm.brand_id | 1 | Using where |
Resultaat EXPLAIN op MariaDB:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | spca | index | product_id_brand_id_model_id_type_id,product_id_type_id | product_id_brand_id_model_id_type_id | 20 | 2349372 | Using where; Using index; Using temporary; Using filesort | |
1 | SIMPLE | cm | eq_ref | PRIMARY,brand_id,model_id_active_deleted,brand_id_active_deleted | PRIMARY | 4 | hottnl_2016.spca.model_id | 1 | Using where |
1 | SIMPLE | spc | eq_ref | PRIMARY,category_id,product_id | PRIMARY | 8 | const,hottnl_2016.spca.product_id | 1 | Using index |
1 | SIMPLE | sp | eq_ref | PRIMARY,active_deleted,deleted,deleted_e_timestamp | PRIMARY | 4 | hottnl_2016.spca.product_id | 1 | Using where |
1 | SIMPLE | cb | eq_ref | PRIMARY | PRIMARY | 4 | hottnl_2016.cm.brand_id | 1 | Using where |
Ze geven beide een totaal ander resultaat. Mijn vraag is nu; ligt dit puur aan een andere omgeving: mariadb vs mysql? Dat lijkt mij namelijk niet... Of moet ik het eerder zoeken in de variabelen van MariaDB, en zo ja naar welke waardes moet ik dan kijken?
Als het nodig is om de structuur van de tabellen hier te posten hoor ik het wel, volgens mij is het niet nodig omdat het niet een query specifieke vraag is. Er zijn meerdere queries waarbij een groot verschil is tussen beide omgevingen. Maar het is niet zo dat MariaDB het voor alles verprutst. Sterker nog; op de MariaDB server draaien een aantal website helemaal vlekkeloos.
PS. Uiteraard zijn de tabellen op beide databases identiek gevuld, met dezelfde keys etc...