Mailinglisten-Archive |
Hallo, eine Anwendung protokolliert in einer Tabelle die letzen Änderungen. Wenn nun Daten gelöscht werden, sind diese letzten Änderungen von dem Wert überflüssig und werden gelöscht. mysql> status; -------------- mysql Ver 14.7 Distrib 4.1.22, for unknown-linux-gnu (x86_64) using readline 4.3 Die Datenbank ist eine InnoDB Datenbank. Die Tabelle hat folgende Parameter: /*Column Information For - accessinfo*/ ------------------------------------------------------ Field Type Collation Null Key Default Extra Privileges Comment ------------------- ------------ ----------------- ------ ------ ------- ------ ------------------------------- ------- acc_id varchar(36) latin1_swedish_ci PRI select,insert,update,references table_name varchar(50) latin1_swedish_ci YES (NULL) select,insert,update,references primary_key varchar(200) latin1_swedish_ci YES (NULL) select,insert,update,references modification_time datetime NULL YES (NULL) select,insert,update,references is_created_flag tinyint(1) NULL 0 select,insert,update,references modification_usr_id varchar(36) latin1_swedish_ci YES MUL (NULL) select,insert,update,references /*Index Information For - accessinfo*/ ----------------------------------------------------- Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment ---------- ---------- ------------------- ------------ ------------------- --------- ----------- -------- ------ ------ ---------- ------- accessinfo 0 PRIMARY 1 acc_id A 1540156 (NULL) (NULL) BTREE accessinfo 1 modification_usr_id 1 modification_usr_id A 18 (NULL) (NULL) YES BTREE /*DDL Information For - accessinfo*/ --------------------------------------------------- Table Create Table ---------- --------------------------------------------------------------------------------------------------- accessinfo CREATE TABLE `accessinfo` ( `acc_id` varchar(36) NOT NULL default '', `table_name` varchar(50) default NULL, `primary_key` varchar(200) default NULL, `modification_time` datetime default NULL, `is_created_flag` tinyint(1) NOT NULL default '0', `modification_usr_id` varchar(36) default NULL, PRIMARY KEY (`acc_id`), KEY `modification_usr_id` (`modification_usr_id`), CONSTRAINT `accessinfo_ibfk_1` FOREIGN KEY (`modification_usr_id`) REFERENCES `user` (`usr_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Im Moment hat sie folgende Menge Einträge: mysql> select count(*) from accessinfo; +----------+ | count(*) | +----------+ | 1528306 | +----------+ 1 row in set (2.19 sec) Beim Löschen tritt jetzt folgendes Problem auf, hier das slow-query-log: # Time: 080903 12:55:29 # Query_time: 8 Lock_time: 0 Rows_sent: 0 Rows_examined: 0 DELETE from accessinfo WHERE table_name = 'abc_dfg' AND primary_key = '0E3BA1ED-07FA-B5F3-99335307CBDC88A9~5C2DDE72-955A-8726-A7D38B263A9B9151'; Nach meinem Verständnis kann man den lesenden Zugriff über Indexes verbessern, aber beim manipulieren von Einträgen müsste der Index bremsen. Hat jemand eine Idee wie man das Löschen beschleunigen kann? Würde ein Autocommit oder ein Zurückhalten auf mehrere Änderung Sinn machen? Vielen Dank und liebe Grüße, Michael 'da didi' Diederich -- http://de.wikipedia.org/wiki/Benutzer:MichaelDiederich http://www.md-d.org/
php::bar PHP Wiki - Listenarchive