C'est à coup de 111 INSERT par minute, ça devrais pas trop changer mais ça peut augmenter. 1700000 rows pour l'instant (63m pour 13 mois). ça tourne bien H24. C'est du MyISAM.
Pour aller chercher des données "au milieu" j'ai eu pas mal de soucis niveau vitesse... même avec des indexes.
j'ai un index primary sur id, et un sur region+date (dual)
example:
mysql> SELECT id FROM table WHERE region = 'CN' AND date < SUBDATE(NOW(), INTERVAL 10000 MINUTE) ORDER BY id DESC LIMIT 1; +---------+
| id |
+---------+
| 1252100 |
+---------+
1 row in set (0.78 sec)
mysql> EXPLAIN SELECT id FROM table WHERE region = 'CN' AND date < SUBDATE(NOW(), INTERVAL 10000 MINUTE) ORDER BY id DESC LIMIT 1;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | table | index | dual | PRIMARY | 4 | NULL | 2 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
1 row in set (0.00 sec)
|
Sans index c'est 2 fois plus lent.
du coup j'ai du utiliser:
mysql> SELECT id FROM table WHERE region = 'CN' AND date BETWEEN SUBDATE(NOW(), INTERVAL 10000+20 MINUTE) AND SUBDATE(NOW(), INTERVAL 10000 MINUTE) ORDER BY id DESC LIMIT 1;
+---------+
| id |
+---------+
| 1252100 |
+---------+
1 row in set (0.00 sec)
mysql> EXPLAIN SELECT id FROM table WHERE region = 'CN' AND date BETWEEN SUBDATE(NOW(), INTERVAL 10000+20 MINUTE) AND SUBDATE(NOW(), INTERVAL 10000 MINUTE) ORDER BY id DESC LIMIT 1;
+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+
| 1 | SIMPLE | table | range | dual | dual | 25 | NULL | 1097 | Using where; Using filesort |
+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+
1 row in set (0.00 sec)
|
içi quasi immédiat
on vois bien la diff type index (ref si pas d'index) vs type range et filesort.
Rufo, mysql stock ou mod genre percona ?
Sinon j'était parti pour faire une table par période, une du moment présent jusqu’à 1 mois, qui as un sample par minute, puis une table de 1 mois à 3 mois qui garde un sample toutes les 10 minutes, etc...
J'aimerai gagner un poil en espace également, vu que là ça vas faire dans les 6 GO par ans et je compte conserver 13 mois de données.
Message édité par mobyfab le 18-05-2011 à 16:44:59