`
trydofor
  • 浏览: 154241 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

DB2-MySql-PG 事务处理的不同

阅读更多
DB2-MySql-PG 事务处理的不同

1. 结论
在事务期间出现数据操作异常(Exception)时,若不rollback,
且继续进行后续操作,最后commit的情况下:

DB2,异常SQL无效,正常SQL生效,类似于autocommit的执行效果。
MySQL,同DB2。但对异常SQL的处理机制不同,如超长时插入截断后数据等。
PostgreSQL,事务直接失败,相当于rollback了。

2. 对象
DB2 v9.5.0.2
PostgreSQL 9.0.4
MySQL 5.0.24-max
MySQL 5.5.24

3. 脚本
-- drop
DROP TABLE TEST_TA
GO
-- create
CREATE TABLE  TEST_TA (
  ID INT NOT NULL ,
  NM CHAR(1)  ,
  PRIMARY KEY (ID) )
ENGINE = INNODB
GO

-- insert
INSERT INTO TEST_TA (ID,NM) VALUES(1,'1')  -- I1
GO
INSERT INTO TEST_TA (ID,NM) VALUES(2,'12') -- I2
GO
INSERT INTO TEST_TA (ID,NM) VALUES(3,'1')  -- I3
GO
INSERT INTO TEST_TA (ID,NM) VALUES(4,'1')  -- I4
GO

-- select
SELECT * FROM TEST_TA
GO

-- delete
DELETE FROM TEST_TA
GO
4. 方法
使用JDBC 对各数据库执行 SQL:create. (AutoCommit=true)
开启事务,执行 SQL:insert,吞掉I2异常,继续执行I3,I4,commit。(AutoCommit=false)
察看结果,select,delete。(AutoCommit=true)

过程中,I2的字段超长后,得到一下信息。

MySQL:
Data truncation: Data truncated for column ‘NM’ at row 1

DB2:
SQLCODE: -433, SQLSTATE: 22001, SQLERRMC: 12
Message: Value “12″ is too long.

PostgreSQL:
value too long for type character(1)
current transaction is aborted, commands ignored until end of transaction block

执行select的结果,DB2:3,MySQL:4,PG:0

5. 用途
在需要有效数据统一提交,无效数据排除的情况下,需要细心的处理异常.

比如字段超长的这个无效数据混杂在有效数据之中,
对DB2,只需要最后commit就可以了.
对MySQL,则需要先一次排查出所有无效数据,再rollback,最后把有效数据进行commit.
而PG,则需要循环排查无效数据和rollback,最后把有效数据进行commit.
0
0
分享到:
评论

相关推荐

    ZabbixDBA:Zabbix数据库监视服务(Oracle,Pg,MySQL,MS SQL,DB2等)

    DB2的监控包括了数据库的活动会话、缓冲池命中率、表空间利用率以及事务处理速度。这些指标对于理解DB2在大型企业级应用中的表现至关重要。 除了基础的性能监控,ZabbixDBA还提供了报警机制,当特定的阈值被触发时...

    数据库连接工具

    IBM DB2则是一款企业级数据库解决方案,尤其在金融和电信行业有着广泛应用,因其对大数据处理和事务处理能力的强大支持而受到赞誉。 Navicat Premium是这样一款多合一的数据库连接工具,它提供了图形化的用户界面,...

    数据库市场产品特性及适用场景.pptx

    - **关系型数据库**:如Oracle、MySQL、DB2、SQL Server、Access和Sybase等,它们支持ACID(原子性、一致性、隔离性和持久性)事务,适用于需要数据一致性的交易型应用。 - **NoSQL数据库**:包括MongoDB、Redis、...

    金山云分布式数据库DragonBase架构详解和实践.pptx

    - **兼容性**:兼容MySQL/PG,业务迁移成本低,同时兼容SQL标准和Oracle常用功能。 - **高性能**:采用计算存储分离,利用分布式并行计算技术提升性能。 - **安全性**:具备用户权限管理、传输和存储加密,以及...

    各种数据库的连接

    数据库是存储和管理数据的核心工具,对于任何IT专业人员来说,理解和掌握如何连接不同类型的数据库都是非常重要的技能。本文将深入探讨如何连接Sql Server 7.0/2000、DB2、Informix、Sybase、MySQL以及PostgreSQL这...

    hibernate连接各种数据库的方法

    Oracle数据库是企业级应用中非常重要的数据库系统,支持复杂的数据管理和事务处理。 ###### 3.2.4 PostgreSQL ```xml <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect ...

    PostgreSQL v9.3 For Win.zip

    它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和对专有系统比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server的一种选择。   PostgreSQL 不寻常的名字导致一些读者停下来尝试拼读它,...

    国产关系型数据库中对存储支持功能.docx

    在银行业务中,存储过程经常被用于实现复杂的业务逻辑,例如事务处理、数据完整性检查、安全审计等功能。Oracle和IBM Db2等传统大型关系型数据库管理系统因其成熟稳定的存储过程支持而被广泛采用。存储过程中的一些...

Global site tag (gtag.js) - Google Analytics