当前位置: 首页 > 科技观察

MySQL优化插入性能相关介绍

时间:2023-03-22 14:07:16 科技观察

MySQL的插入语句语法,mysql优化插入性能相关介绍。insertinto`table`(`field1`,`field2`)values('value1','value2');提高insert性能的方法1.一条sql语句插入多条数据INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_0','content_0',0);INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_1','content_1',1);可以写成INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_0','content_0',0),('userid_1','content_1',1);2.使用事务STARTTRANSACTION;INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_0','content_0',0);INSERTINTO`insert_table`(`uid`,`content`,`type`)VALUES('userid_1','content_1',1);...提交;注意事项1、sql语句的长度是有限制的,合并sql语句的时候要注意。长度限制可以通过max_allowed_pa??cket配置项修改,默认为1M。2、交易量过大,会影响执行效率。mysql有innodb_log_buffer_size配置项。如果超过这个值,会占用磁盘数据,影响执行效率。事务相关配置项说明:innodb_buffer_pool_size是使用Innodb的重要变量。与MyISAM相比,Innodb对缓冲区大小更为敏感。MySIAM在数据量大的时候可能会使用默认的key_buffer_size,但是Innodb在数据量大的时候使用默认值会感觉爬行。Innodb的bufferpool会缓存数据和索引,所以不需要给系统的缓存留空间。如果只使用Innodb,可以将这个值设置为内存的70%-80%。和key_buffer一样,如果数据量比较小,不会增加太多,那么这个值不要设置得太高,以提高内存占用。innodb_additional_pool_size的效果不是很明显,至少在操作系统可以合理分配内存的情况下是这样。但你可能仍然需要将它设置为20M或更多,以查看Innodb将分配多少内存用于其他用途。innodb_log_file_size对于写入很多,尤其是大量数据来说非常重要。请注意,较大的文件可提供更好的性能,但需要更多时间来恢复数据库。我一般用64M-512M,看服务器的空间大小。innodb_log_buffer_size默认值适用于大多数具有中等写入操作和短事务的应用程序。如果频繁更新或使用大量blob数据,则应增加此值。但是如果太大的话,也是浪费内存,因为总会有flush(这个词中文怎么说?)1秒一次,所以没必要设置大于1的要求第二。8M-16M一般应该够用了。较小的应用程序可以做得更小。innodb_flush_log_at_trx_commit抱怨Innodb比MyISAM慢100倍?那你可能忘记调整这个值了。默认值1意味着每次事务提交或者事务外的命令都需要将日志写入(flush)硬盘,非常耗时。特别是在使用电池备份缓存(Batterybackedupcache)时。对于许多应用程序,尤其是从MyISAM表传输的应用程序,可以将其设置为2。意思是不写硬盘,而是写系统缓存。日志仍会每秒刷新到磁盘,因此您通常不会丢失超过1-2秒的更新。设置为0会比较快,但是安全方面比较差。即使MySQL挂了,事务数据也可能会丢失。而值为2可能只会在整个操作系统挂起时才丢失数据。

最新推荐
猜你喜欢