Nous avons une table assez unoptimized avec la définition suivante:Mysql - temps estimé à baisser l'indice
CREATE TABLE `Usage` (
`TxnDate` varchar(30) DEFAULT NULL,
`TxnID` decimal(13,2) NOT NULL,
`UserID2015` varchar(20) DEFAULT NULL,
`UserRMN` decimal(13,0) DEFAULT NULL,
`CustomerNo` decimal(13,0) DEFAULT NULL,
`OperatorName` varchar(50) DEFAULT NULL,
`AggregatorName` varchar(30) DEFAULT NULL,
`TransAmount` decimal(10,2) DEFAULT NULL,
`MMPLTxnID` decimal(13,0) DEFAULT NULL,
`ProductType` varchar(30) DEFAULT NULL,
`YearMonthRMN` varchar(50) DEFAULT NULL,
PRIMARY KEY (`TxnID`),
UNIQUE KEY `TxnID` (`TxnID`) USING BTREE,
KEY `TxnDate` (`TxnDate`),
KEY `OperatorName` (`OperatorName`),
KEY `AggregatorName` (`AggregatorName`),
KEY `MMPLTxnID` (`MMPLTxnID`),
KEY `ProductType` (`ProductType`),
KEY `UserRMN` (`UserRMN`),
KEY `YearMonthRMN` (`YearMonthRMN`) USING BTREE,
KEY `CustomerNo` (`CustomerNo`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Le tableau a abotu 170M records.
Je souhaite supprimer la clé primaire et ajouter à la place une clé primaire de numéro automatique. Jusqu'à présent, l'indice a chuté de 2h.
Pourquoi est-il si long de supprimer un index, y a-t-il un tri?
Comment puis-je estimer l'heure de suppression de l'index?
Lorsque j'ajouterai le numéro automatique, devrais-je estimer le temps de tri de la table ou cela ne sera-t-il pas nécessaire avec un nouvel index autonumber?
Ceci est sur Amazon RDS, donc je pourrais au moins provisionner de la mémoire principale pour l'espace de journalisation des tailles d'index? – jdog
La création d'index est généralement contrainte par les performances d'E/S au lieu de la mémoire. –
Ok, mais à peu près je peux calculer: J'ai besoin de x Go pour trier les colonnes indexées en mémoire et j'ai besoin de x temps pour lire les colonnes, ce qui est contraint IO? Donc, je pourrais temporairement affecter le maximum d'E/S disponibles et assez de mémoire, de sorte que le tri ne se fasse pas avec l'échange sur le disque – jdog