Les performances d'insertion de MySQL se dégradent sur une grande table

Je travaille avec une immense table qui a plus de 250 millions de lignes. Le schéma est simple.

CREATE TABLE MyTable (
        id BIGINT PRIMARY KEY AUTO_INCREMENT,
        oid INT NOT NULL,
        long1 BIGINT NOT NULL,
        str1 VARCHAR(30) DEFAULT NULL,
        str2 VARCHAR(30) DEFAULT NULL,
        str2 VARCHAR(200) DEFAULT NULL,
        str4 VARCHAR(50) DEFAULT NULL,
        int1 INT(6) DEFAULT NULL,
        str5 VARCHAR(300) DEFAULT NULL,
        date1 DATE DEFAULT NULL,
        date2 DATE DEFAULT NULL,
        lastUpdated TIMESTAMP NOT NULL,
        hashcode INT NOT NULL,
        active TINYINT(1) DEFAULT 1,
        KEY oid(oid),
        KEY lastUpdated(lastUpdated),
        UNIQUE KEY (hashcode, active),
        KEY (active)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 MAX_ROWS=1000000000;

La performance de l'insert a chuté de manière significative. Jusqu'à 150 millions de lignes dans la table, il sert à prendre de 5 à 6 secondes pour insérer 10 000 lignes. Maintenant, il a augmenté de 2 à 4 fois. Innodb est ibdata fichier a grandi à 107 GB. Innodb paramètres de configuration sont comme suit.

innodb_buffer_pool_size = 36G # Machine has 48G memory
innodb_additional_mem_pool_size = 20M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_file_size = 50M
innodb_log_buffer_size = 20M
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
expire_logs_days = 4

IO temps d'attente est passé comme on le voit avec top. J'ai essayé de changer la méthode flush à O_DSYNC, mais il n'a pas aidé. Le disque est sculptée de matériel configuration RAID 10. Dans une précédente installation avec un seul disque, IO n'était pas un problème.

Est partitionnement de la table seule option? Pouvez séparer 100G de fichier dans "petits" fichiers d'aide? Existe-il des variables qui doivent être accordées pour le RAID?

Mise à jour: C'est un système de test. J'ai la liberté de faire les modifications nécessaires.

source d'informationauteur Shashikant Kore