Bonjour,

Je dois gérer une table d'historique de trois mois glissants de détails d'appels
avec, à terme, 100 millions de lignes. Je partitionne la table sur la date d'appel afin de pourvoir travailler simplement par mois.

J'ai aucun problème pour importer les 30M déjà en ma possession sans clé primaire mais par contre, dès que je crée la clé primaire dont j'ai besoin les performances à l'insert s'écroulent à partir de 10M de lignes et je ne peux quasiment plus insérer. Ca va poser un problème pour arriver à 100M!

Je comprends bien le travail nécessaire pour gérer la clé primaire mais par contre, ca devrait quand même marcher non?!

J'ai essayé avec innoDB et myisam avec les même résultats.

Comment pourrais-je gérer ca?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE TABLE `network` (
  `id` varchar(50) NOT NULL DEFAULT '',
  `type` varchar(20) NOT NULL,
  `nature` smallint(6) NOT NULL,
  `sense` smallint(6) NOT NULL,
  `msisdn` varchar(20) NOT NULL,
  `msisdn_country` varchar(50) DEFAULT NULL,
  `msisdn_zone` varchar(5) DEFAULT NULL,
  `contact` varchar(50) DEFAULT '',
  `contact_country` varchar(50) DEFAULT NULL,
  `usage_date` datetime NOT NULL,
  `contact_zone` varchar(5) DEFAULT NULL,
  `volume` bigint(10) unsigned NOT NULL,
  `zoning` varchar(20) NOT NULL,
  `in_trunk` varchar(50) NOT NULL,
  `out_trunk` varchar(50) NOT NULL,
  `filename` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ( TO_DAYS(usage_date))
(PARTITION rx201302 VALUES LESS THAN (735293) ENGINE = MyISAM,
 PARTITION rx201303 VALUES LESS THAN (735324) ENGINE = MyISAM,
 PARTITION rx201304 VALUES LESS THAN (735354) ENGINE = MyISAM,
 PARTITION rx201305 VALUES LESS THAN (735385) ENGINE = MyISAM,
 PARTITION rx201306 VALUES LESS THAN (735415) ENGINE = MyISAM,
 PARTITION rx201307 VALUES LESS THAN (735446) ENGINE = MyISAM,
 PARTITION rx201308 VALUES LESS THAN (735477) ENGINE = MyISAM,
 PARTITION rx201309 VALUES LESS THAN (735507) ENGINE = MyISAM,
 PARTITION rx201310 VALUES LESS THAN (735538) ENGINE = MyISAM,
 PARTITION rx201311 VALUES LESS THAN (735568) ENGINE = MyISAM,
 PARTITION rx201312 VALUES LESS THAN (735599) ENGINE = MyISAM,
 PARTITION rx2014 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ALTER TABLE `network`
	ADD INDEX `unique` (`msisdn`, `contact`, `type`, `usage_date`, `volume`);
Merci

Installation: Maria 5.5 64b