• 售前

  • 售后

热门帖子
入门百科

MySQL优化insert性能的方法示例

[复制链接]
付佳琦 显示全部楼层 发表于 2021-10-26 13:18:51 |阅读模式 打印 上一主题 下一主题
MySQL性能优化

MySQL性能优化就是通过公道安排资源,调整体系参数使MySQL运行更快、更节省资源。MySQL性能优化包罗查询速率优化、更新速率优化、MySQL服务器优化等。本篇博客将从查询优化、数据库结构优化、MySQL服务器优化3个方面先容。
MySQL数据库优化,一方面是找出体系瓶颈,进步MySQL数据库整体性能;另一方面须要公道的结构设计和参数调整,以进步用户操纵相应速率;同时还要尽可能节省体系资源,以便体系可以提供更大负荷的服务。比方,通过优化文件体系,进步磁盘I\O的读写书读;通过优化操纵体系调度策略,进步MySQL在高负荷下的负载能力;优化表结构、索引、查询语句等使查询相应更快。
MySQL的 insert 语句语法,关于mysql 优化 insert 性能 的相关先容。
  1. insert into `table`(`field1`,`field2`) values('value1','value2');
复制代码
进步insert 性能的方法

1.一条sql语句插入多条数据
  1. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0);
  2. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1);
复制代码
可以写成
  1. INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1);
复制代码
2.使用事务
  1. START TRANSACTION; INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0);
  2. 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只会在整个操纵体系 挂了时才可能丢数据。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习大概工作具有肯定的参考学习价值,假如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作