赣州企业网站建设公司,网站建设流程ppt,名师工作室建设网站,qq空间做淘宝客网站在Oracle(或者, 应该说‘一般’吗?), 我们考虑Transaction(事务)这样. 你要一个决定来处理一连的操作的时候, 你用Transaction(事务)处理进程然后Commit或者Rollback.我觉得Transaction(事务)一般是这样子.现在我们不考虑Transaction levels和锁定.Transaction要明确的开始和结…在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 ) engineInnoDB;② create table test2 ( col1 int ) engineMyISAM;③ start transaction;④ insert into test1 values (11);⑤ insert into test2 values (21);⑥ commit;① mysql create table test1 ( col1 int ) engineInnoDB;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) ENGINEInnoDB DEFAULT CHARSETutf8 |——-——————————————————————————————-1 row in set (0.00 sec)② mysql create table test2 ( col1 int ) engineMyISAM;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) ENGINEMyISAM DEFAULT CHARSETutf8 |——-——————————————————————————————-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是没什么意思的, 但也没有什么害的, 所以你不需要担心 (你故意要那样做也是自由的)嗯, 跟我想像的差不多. 即使如此, 我没有自信, 所以很好的机会实际看一看.有机会, 我们考虑更本质的内容吧.那, 今天到这里吧.再见!