表类型是INNODB,使用INSERT INTO语句进行插入的速度很慢,是否需要调整一些参数,谢谢。MYSQL 版本 5.1.44。

解决方案 »

  1.   

    你的表上是否索引过多?
    慢的表现主要是什么?
    insert 语句是什么样?
      

  2.   

    提高buffer_pool、log_buffer等。
    windows适量加大thread表数据量多大?表结构?
      

  3.   

    删除一些索引
    或是,在my.ini中把一些size相关的参数调整大一些看看
      

  4.   

    insert写入慢分两种情况:
    1、insert into tbl (...) value (...)大并发的单条语句,这个时候很可能是由于innodb_fush_log_at_trx_commit为1的缘故。也就是每次写入刷新磁盘,导致IO操作很多,是个瓶颈点。2、insert into tbl (...) values (...),(...)这样的sql慢时,需要将bulk_insert_buffer_size值调大,默认为8M。可以根据需要调整到32M~64M之间。如果再有别的瓶颈问题,需要详细描述再作分析。
      

  5.   

    SQL 语句是  insert into tbl (...) value (...)数据量在500万条数据插入的时间大概在1分钟5万条左右CREATE TABLE `principals` (                                                 
                  `id` INT(11) NOT NULL AUTO_INCREMENT,                                     
                  `name` VARCHAR(60) NOT NULL,                                              
                  `password` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,  
                  `groups` INT(11) DEFAULT NULL,                                            
                  `email` VARCHAR(60) DEFAULT NULL,                                         
                  `privatebuffer` MEDIUMBLOB,                                               
                  `privateextension` VARCHAR(60) DEFAULT NULL,                              
                  `publicbuffer` MEDIUMBLOB,                                                
                  `publicextension` VARCHAR(60) DEFAULT NULL,                               
                  `creationdate` DATETIME DEFAULT NULL,                                     
                  `effectivedate` DATETIME DEFAULT NULL,                                    
                  `noteffectivemsg` VARCHAR(120) DEFAULT NULL,                              
                  `expirydate` DATETIME DEFAULT NULL,                                       
                  `expiredmsg` VARCHAR(120) DEFAULT NULL,                                   
                  `deleted` TINYINT(1) DEFAULT '0',                                         
                  `version1` BIT(1) DEFAULT NULL,                                           
                  PRIMARY KEY (`id`) ,                                                       
                  UNIQUE KEY `name` (`name`)                                               
                ) ENGINE=INNODB AUTO_INCREMENT=146717 DEFAULT CHARSET=utf8    
      

  6.   

    去掉primary key以及其它key,插入完以后再重建它们。应该能省一部分时间。像这种大数据量的insert,最好可以预先生成数据文件,然后一次load data,那样应该更快一些。