MySQL DBA必读:万字归总表设计与SQL编写技巧 - MySQL
2019-10-25 18:00
1896 查看
4、避免使用insert..selec..语句
当使用insert...select...进行记录的插入时,如果select的表是innodb类型的,不论insert的表是什么类型的表,都会对select的表的纪录进行锁定。对于那些从Oracle迁移过来的应用,需要特别的注意,因为Oracle并不存在类似的问题,所以在Oracle的应用中insert...select...操作非常常见。例如:有时候会对比较多的纪录进行统计分析,然后将统计的中间结果插入到另外一个表,这样的操作因为进行的非常少,所以可能并没有设置相应的索引。
如果迁移到MySQL数据库后不进行相应的调整,那么在进行这个操作期间,对需要select的表实际上是进行的全表扫描导致的所有记录的锁定,将会对应用的其他操作造成非常严重的影响。
究其主要原因,是因为MySQL在实现复制的机制时和Oracle是不同的,如果不进行select表的锁定,则可能造成从数据库在恢复期间插入结果集的不同,造成主从数据的不一致。如果不采用主从复制,关闭binlog并不能避免对select纪录的锁定。如果使用这个binlog进行从数据库的恢复,或者进行主数据库的灾难恢复,都将可能和主数据库的执行效果不同。
相关文章推荐
- Mysql优化技巧(数据库设计、命名规范、索引优化、面试、SQL面试,Java面试)
- MySQL中SQL优化和架构设计的一些简单想法
- mysql sql技巧篇
- Oracle与Mysql等数据库通用SQL优化技巧
- 数据库设计规范之SQL编写规范
- 关于 MySQL 你可能不知道的 SQL 使用技巧
- 30个mysql千万级大数据SQL查询优化技巧详解
- MySQL中SQL优化和架构设计
- MySQL中SQL优化和架构设计的一些简单想法
- 71.笔记 MySQL学习——C编写MySQL程序四处理SQL
- 第一天,Mysql安装,DDL(数据库定义语言),DBA,DML(数据库操纵语言),导入外面的sql文件
- 数据库设计规范之SQL编写规范
- 听风吹雨 (SQL SERVER & MYSQL) DBA
- Mysql之sql开发技巧
- mysql------基础及常见SQL技巧
- MySQL中SQL优化和架构设计的一些简单想法(转贴)
- Java中的面试题 [5] --- 数据库知识、MySQL、Oracle、sql调优、sql语句设计等
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
- MYSQL查询SQL的注意事项和一些技巧总结
- MySQL中SQL优化和架构设计的一些简单想法