mysql innodb myisam 混合,MySQL MyIsam/InnoDB混合在一起的事务

在Oracle(或者, 应该说‘一般’吗?), 我们考虑Transaction(事务)这样. 你要一个决定来处理一连的操作的时候, 你用Transaction(事务)处理进程然后Commit或者Rollback.

我觉得Transaction(事务)一般是这样子.

现在我们不考虑Transaction levels和锁定.

Transaction要明确的开始和结束, 从而你要留意的是有没有不明确地结束transaction的事情. (我们现在不考虑levels和锁定)

要是你不太明白什么语句会不明确地结束transactions, 就写像Truncate不明确地把transaction结束的东西, 结果很惨, 你到那里写的进程都会被Commit.

不过, 你理解这点就没有什么难用的. (记得吗?我们现在不考虑levels和锁定哦)

因为Oracle对Schema只有一种引擎, 我们可以像上述处理.

我觉得你在Oracle上操作的时候不会留意DB引擎或存储引擎(或者只有我不知道的吗?).

另一方面, 在MySQL, 你可以按表来设置存储引擎, 这意味一个Schema(数据库)可能会有几种引擎混合在一起.

我觉得, Schema的物理设计应该按照引擎分开, 不过, 那种物理设计不一定存在.

那, 在transaction里执行MyIsam/InnoDB混合在一起的进程的话, 会怎么样?嗯嗯嗯… 不能马上回答…

唉, 太遗憾了!因此, 实验看看吧.

单步执行以下语句的时候, 也有另一个session(会话)在浏览.

① create table test1 ( col1 int ) engine=InnoDB;

② create table test2 ( col1 int ) engine=MyISAM;

③ start transaction;

④ insert into test1 values (11);

⑤ insert into test2 values (21);

⑥ commit;

① mysql> create table test1 ( col1 int ) engine=InnoDB;

Query OK, 0 rows affected (0.05 sec)

mysql> show create table test1;

+——-+——————————————————————————————-+

| Table | Create Table |

+——-+——————————————————————————————-+

| test1 | CREATE TABLE `test1` (

`col1` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+——-+——————————————————————————————-+

1 row in set (0.00 sec)

② mysql> create table test2 ( col1 int ) engine=MyISAM;

Query OK, 0 rows affected (0.05 sec)

mysql> show create table test2;

+——-+——————————————————————————————-+

| Table | Create Table |

+——-+——————————————————————————————-+

| test2 | CREATE TABLE `test2` (

`col1` int(11) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

+——-+——————————————————————————————-+

1 row in set (0.00 sec)

③ mysql> start transaction;

Query OK, 0 rows affected (0.00 sec)

④ mysql> insert into test1 values (11);

Query OK, 1 row affected (0.01 sec)

・执行之后, 从同一个会话(session)确认一下

mysql> select * from test1;

+——+

| col1 |

+——+

| 11 |

+——+

1 row in set (0.00 sec)

・从另一个会话(session)确认一下

mysql> select * from test1;

Empty set (0.01 sec)

⑤ mysql> insert into test2 values (21);

Query OK, 1 row affected (0.00 sec)

・执行之后, 从同一个会话(session)确认一下

mysql> select * from test1;

+——+

| col1 |

+——+

| 11 |

+——+

1 row in set (0.00 sec)

mysql> select * from test2;

+——+

| col1 |

+——+

| 21 |

+——+

1 row in set (0.00 sec)

・从另一个会话(session)确认一下

mysql> select * from test1;

Empty set (0.00 sec)

mysql> select * from test2;

+——+

| col1 |

+——+

| 21 |

+——+

1 row in set (0.00 sec)

・从以上, 可以说InnoDB表还在transaction里,

另一方面, 无论是否还在transaction里, MyISAM表会自动地被commit (本来, 这概念本身不存在)

还有即使MyISAM表数据确定了, transaction仍然不会被commit或者中断.

⑥ mysql> commit;

Query OK, 0 rows affected (0.04 sec)

・从同一个会话(session)确认一下

mysql> select * from test1;

+——+

| col1 |

+——+

| 11 |

+——+

1 row in set (0.00 sec)

mysql> select * from test2;

+——+

| col1 |

+——+

| 21 |

+——+

1 row in set (0.00 sec)

・从另一个会话(session)确认一下

mysql> select * from test1;

+——+

| col1 |

+——+

| 11 |

+——+

1 row in set (0.00 sec)

mysql> select * from test2;

+——+

| col1 |

+——+

| 21 |

+——+

1 row in set (0.00 sec)

・从以上, 可以理解在⑤transaction没有受中断.

・因此, 我的结论是;

・你不用担心引擎混合在一起.

・向不支持transaction的引擎发行transaction是没什么意思的, 但也没有什么害的, 所以你不需要担心 (你故意要那样做也是自由的)

嗯, 跟我想像的差不多. 即使如此, 我没有自信, 所以很好的机会实际看一看.

有机会, 我们考虑更本质的内容吧.

那, 今天到这里吧.

再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bat窗口大小设置_8-Flink中的窗口

戳原文:1-Flink入门2-本地环境搭建&构建第一个Flink应用3-DataSet API 4-DataSteam API5-集群部署6-分布式缓存7-重启策略8-Flink中的窗口9-Flink中的Time窗口窗口类型flink支持两种划分窗口的方式(time和count) 如果根据时间划分窗口&am…

php中pandans,Python地信专题 | 基于geopandas的空间数据分析-文件IO篇

本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1 简介在上一篇文章中我们对geopandas中的坐标参考系有了较为深入的学习,而在日常空间数据分析工作中矢量文件的读入和写出,是至关重要的环节。作为基于geo…

ros创建工作空间_ROS入门学习之七Moveit机械臂控制

1.MoveIt!系统架构MoveIt是什么:一个易于使用的集成化开发平台由一系列移动操作的功能包组成:运动规划、操作控制、3D感知、运动学、控制与导航算法提供友好的GUI可应用于工业、商业、研发和其他领域ROS社区中使用度排名前三的功能包系统架构用户接口(Us…

matlab中quat2angle,matlab 学习记录

(1)元胞数组的创建a{matlab,20;ones(2,3),1:10} %创建方法一b[{matlab},{20};{ones(2,3)},{1:10}] %创建方法二c{10} …

常用于评价回归模型优劣的统计量包括( )。_第四十一讲 R-判断回归模型性能的指标...

当回归模型建立好以后,如何评价该回归模型是否与另一个回归模型有区别,如何比较两个回归模型的性能?这一讲中,我们将给大家介绍几个评价回归模型性能的统计指标。1. 模型性能指标在回归模型中,最常用的评估指标包括&am…

matlab mandrill,MATLAB】MATLAB的自带数据及可生成数据的函数

有时我们需要验证一些算法,但又不方便使用自己的数据,这时使用MATLAB自带的数据会带来很多便利,方便交流并且也不用担心未发表的工作会泄露。这里整理了一些MATLAB自带的数据……说明:【数据】表示直接可装载的(load),…

python 常用包_Python常用指引

Python常用指引Python常用指引的形式来源于Linux文档项目的常用指引章节,是一系列独立、指定主题并尝试完全覆盖该主题的文章集合。致力于提供比Python库参考帮助更详尽的文档。Python 3 是 Python 的未来,但 Python 2 仍处于活跃使用阶段,最…

java中equals函数所在的类,重写Java中的equals方法介绍

Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型,不论是对象数组,列表等都扩展了Object类.了解学习Object中方法的设计原理和实现方式有助于更好的学习理解java语言.下面,我们首先学…

读取当前linux进程内存_(笔记)Linux上的内存分配

作者: LemonNan原文: https://juejin.im/post/5ee3c34a518825430c3ad31d前言本篇是对Linux内存分配的一个学习笔记.程序内存结构下面是在 Linux/x86-32 中典型的一个进程内存结构文本段包含了进程运行的程序机器语言指令. 文本段具有只读属性, 以防止进程通过勘误指针意外修改自…

php改成IP连接数据库,thinkphp,pdo连接数据库,host自动被替换成了本机ip

class DBAccess extends PDO{ private $charset; // 数据库字符集public $cacheDir_cache_$98sdf29fw!d#s4fef/; public $prename; public $time; function __construct($dsn, $user, $password){ try{ parent::__construct($dsn, $user, $pa…

django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

程序介绍BookStack,基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有简洁美观的页面布局,实现了文档采集、导入、电子书生成以及版本控制等强大的文档功能,并推出了配套的开源微信小程序 B…

python tcp通信如何实现多人聊天,Python实现多用户全双工聊天(一对一),python多用户,多用户全双工聊天简陋...

Python实现多用户全双工聊天(一对一),python多用户,多用户全双工聊天简陋多用户全双工聊天简陋版简单实现了两个客户端之间的通信,客户端发送消息,先由服务器接收,然后服务器转发到另一客户端。该版本功能非常简陋,仅仅…

matlab 随机森林算法_随机森林算法

随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果。它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务。在这篇文章中,您将学习随机森林算法…

python教程循环语句,Python基础教程之循环语句(for、while和嵌套循环)

循环可以用来重复执行某条语句,直到某个条件得到满足或遍历所有元素。1 for循环是for循环,可以把集合数据类型list、tuple、dict、set的元素遍历出来。(1)对list进行循环city_list [广州,深圳,东莞,佛山]city_list [广州,深圳,东莞,佛山]for city in c…

python课程的中期报告_电子课程设计中期报告

电子线路课程设计中期报告 电信工一班 王绪泉 200900121181 1. 设计题目 设计一个数字显示的电子温度计,要求包含模数转换模块,可数字显示,可测定温 度范围在 0 到 100 摄氏度之间,精度允许误差正负 0.5 摄氏度。 设计思路 本题目…

php-fpm 配置文件位置,php

先清空php-fpm.conf> /usr/local/php/etc/php-fpm.conf输入以下内容:[global]pid /usr/local/php/var/run/php-fpm.piderror_log /usr/local/php/var/log/php-fpm.log[www]listen /tmp/php-fcgi.sockuser php-fpmgroup php-fpmpm dynamicpm.max_children …

opengl 纹理贴到对应的位置_一步步学OpenGL(27) -《公告牌技术与几何着色器》

教程 27公告牌技术与几何着色器原文: http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器&#xff0c…

thinkphp如何通过php请求接口,thinkphp怎么做json数据接口

function checkUser(){//获取用户名 密码$uname$_GET[uname]; $upass$_GET[upass]; $userM("user");//访问数据库中的t_user表(t_ 以在config.php中设置为表前缀了)$where"uname".$uname." and upass".$upass."";//查询…

python 工资管理软件_基于[Python]的员工管理系统

基于[Python]的员工管理系统 ———————————————————————————————— 简介 使用python语言来完成一个员工管理系统,员工信息包含:员工工号,姓名, 年龄,性别,职位,工…

php执行zip压缩,PHP执行zip与rar解压缩方法实现代码

Zip:PclZip http://www.phpconcept.net/pclzip/index.en.phpRar:PECL rar http://pecl.php.net/package/rar以往过去要在php下执行解压缩程序,无非最常见的方法是写command 然后用exec()等执行函式去跑这在Windows下或许可以,但换…