Pēdējos projektos kaut kā sanāca izmantot Perconu un Mysql ilgi nebija aiztikts, bet šodien sanāca, ka vajadzēja izveidot vienu Mysql tabulu ar 1'000'000 ierakstiem. Tātad vienkāršotā gadījumā,
CREATE TABLE `testdb`.`test1` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`val` varchar(8) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8;Kā redzams, ir izmantots InnoDB un primary_key ir uz id, tika mēģināts arī likt atsevišķi indeksu uz id, tika mēģināts arī myisam. Tas tika mēģināt kā uz windows tā uz Centos.
Mysql versija 5.1.X
Visos gadījumos viens un tas pats.
Tātad izpildot parastu kveriju:
SELECT * FROM test1 ORDER BY id LIMIT 500000,10Šāds kverijs izpildās 5 sekundes un uzliekot EXPLAIN var redzēt, ka tiek skenētas 500010 rindas, tātad fullscans. Apjautājos dažiem paziņām un daži teica, ka arī ir nācies ar to sastapties un, ka pie kaut kāda lielāka ierakstu skaita, pēkšņi kveriju izpilde vienkārši saiet sviestā.
Nonācām pie versijām:
1) 10% - visiem mums ir līkas rokas un pārāk maz gulētas naktis
2) 20% - bugs
3) 70% - orakle sācis bojāt mysql, lai visi pirktu dārgos maksas produktus.
Tātad, varbūt kādam ir kādas versijas, kāpēc šādi notiek?