insert into `table`(`field1`,`field2`) values('value1','value2');
进步insert 机能的要领
1.一条sql语句插进去多条数据
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1);
能够写成
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1);
2.应用事件
START TRANSACTION; INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1); ... COMMIT;
注重
1.sql语句长度有限定,兼并sql语句时要注重。长度限定能够经由过程max_allowed_packet设置项修正,默以为1M。
2.事件太大会影响实行效力,mysql有innodb_log_buffer_size设置项,凌驾这个值会应用磁盘数据,影响实行效力。
关于事件的设置项申明:
innodb_buffer_pool_size
如 果用Innodb,那末这是一个主要变量。相干于MyISAM来讲,Innodb关于buffer size更敏感。MySIAM能够关于大数据量应用默许的key_buffer_size也还好,但Innodb在大数据量时用默许值就觉得在爬了。 Innodb的缓冲池会缓存数据和索引,所以不须要给体系的缓存留空间,假如只用Innodb,能够把这个值设为内存的70%-80%。和 key_buffer雷同,假如数据量比较小也不怎么增添,那末不要把这个值设太高也能够进步内存的应用率。
innodb_additional_pool_size
这个的结果不是很明显,至少是当操作体系能合理分派内存时。但你能够仍须要设成20M或更多一点以看Innodb会分派若干内存做其他用处。
innodb_log_file_size
关于写许多尤其是大数据量时非常主要。要注重,大的文件供应更高的机能,但数据库恢复时会用更多的时候。我平经常使用64M-512M,细致取决于服务器的空间。innodb_log_buffer_size
默许值关于多半中等写操作和事件短的应用都是能够的。如 果常常做更新或许应用了许多blob数据,应当增大这个值。但太大了也是糟蹋内存,由于1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不须要设到凌驾1秒的需求。8M-16M平常应当够了。小的应用能够设更小一点。innodb_flush_log_at_trx_commit
埋怨Innodb比MyISAM慢 100倍?那末你大概是忘了调解这个值。默许值1的意义是每一次事件提交或事件外的指令都须要把日记写入(flush)硬盘,这是很费时的。特别是应用电 池供电缓存(Battery backed up cache)时。设成2关于许多应用,特别是从MyISAM表转过来的是能够的,它的意义是不写入硬盘而是写入体系缓存。日记仍然会每秒flush到硬 盘,所以你平常不会丧失凌驾1-2秒的更新。设成0会更快一点,但平安方面比较差,纵然MySQL挂了也能够会丧失事件的数据。而值2只会在全部操作体系 挂了时才能够丢数据。 本篇讲解了关于mysql 优化 insert 机能 的相干引见,更多先关内容请关注ki4网。
相干引荐:
怎样应用php 经常使用自定义要领
怎样经由过程php 应用异或(XOR)加密/解密文件
经由过程php 怎样猎取一个变量的名字
以上就是关于mysql 优化 insert 机能 的相干引见的细致内容,更多请关注ki4网别的相干文章!