在发展的前几天遇到的问题,在调试过程中发现配置service本次交易不工作层,更新后数据库抛出异常或成功,交易不会回滚。随后开始了各种检查,视图spring的事务是否配置正确,进入更新方法时是否开启了事务。经过检查之后发现一切都正常,那为什么事务不回滚呢?问题出在了一个非常难会去考虑的地方(数据库里创建的表不支持事务)。

Mysql数据库默认的创建表的引擎是:MYISAM,使用这样的引擎的表效率高。可是不支持事务,所以我们在建表时最好是依据需求手动去指定我们须要的引擎,以下是一个可以支持事务的建表sql,可以參考一下:

CREATE TABLE   test (
id varchar(32) PRIMARY KEY,
name varchar(32),
create_time datetime,
create_user varchar(32) ,
address varchar(20) NOT NULL ,
remark varchar(100)
) ENGINE = InnoDB DEFAULT CHARSET=utf8

备注:ENGINE = InnoDB这个配置就是选择何种引擎,InnoDB这样的引擎支持事务。

以下是Mysql数据库常见的几种引擎的说明。能够了解一下,下次再创建表我们就能够选择合适引擎了。

ISAM:索引顺序訪问法(Index Sequential Access Mode)

ISAM是一个定义明白且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM运行读取操作的速度非常快,并且不占用大量的内存和存储资源。

ISAM的两个主要不足之处在于,它不支持事务处理。也不可以容错。假设你的硬盘崩溃了,那么数据文件就无法恢复了。假设你正在把ISAM用在关键任务应用程序里,那就必须常常备份你全部的实时数据,通过其复制特性,MYSQL可以支持这种备份应用程序。

MyISAM:Mysql的默认存储引擎

MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制。来优化多个并发的读写操作,其代价是你须要常常执行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM另一些实用的扩展,比如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了高速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商仅仅同意使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。

HEAP:

HEAP同意仅仅驻留在内存里的暂时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,可是它所管理的数据是不稳定的。并且假设在关机之前没有进行保存。那么全部的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。

HEAP表格在你须要使用SELECT表达式来选择和操控数据的时候很实用。

要记住,在用完表格之后就删除表格。

InnoDB:

InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品。这项技术就是MYSQL++ API。在使用MYSQL的时候,你所面对的每个挑战差点儿都源于ISAM和MyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。虽然要比ISAM和 MyISAM引擎慢非常多,可是InnoDB包含了对事务处理和外来键的支持。这两点都是前两个引擎所没有的。假设你的设计须要这些特性中的一者或者两者,那你就要被迫使用INNODB和BERKLEY引擎中的一个了,我们经常使用的是InnoDB。

InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。

InnoDB锁定在行级而且也在SELECT语句提供一个Oracle风格一致的非锁定读,这些特色添加了多用户部署和性能。没有在InnoDB中扩大锁定的须要。由于在InnoDB中行级锁定适合很小的空间。

InnoDB也支持FOREIGN KEY强制。在SQL查询中。你能够自由地将InnoDB类型的表与其他MySQL的表的类型混合起来,甚至在同一个查询中也能够混合。这是mysql官方的描写叙述。

据推测,许多人想了解更多去网上查一下...

版权声明:本文博客原创文章。博客,未经同意,不得转载。

代码配置没有问题,为什么不回滚事务(要理解Mysql数据库引擎)的更多相关文章

  1. 初步理解 MySQL数据库

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1. 索引是做什么的? 索引用于快速找出在某个列中有一特定值的行.不使用索引,MYSQL必须从第1条记录 ...

  2. 理解MySQL数据库事务

    1. 什么是事务处理? 事务处理是一种机制,它是用来管理必须成批执行的mysql操作.来保证数据库不完整的操作结果. 2. 为什么要使用事务处理? 在使用mysql操作数据的过程中,如果只是简单的中小 ...

  3. 深入理解Mysql数据库主从延迟

    1什么会增加主从延迟? 1 网络不好 2 从库硬件差 3 索引没做好,从库执行慢 4 从库锁等待,多见于myisam 5 主库写频繁,从库单线程执行慢 6 使用row复制,或mix使用行复制 2如何优 ...

  4. 理解MySQL数据库覆盖索引

    话说有这么一个表: CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL, ...

  5. 使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】

    开发环境: VS2013, Asp.Net MVC 4.0, .Net Framework 4.0, Log4net 1.2.13.0, Mysql.Data.dll,6.8.3.0 设置步骤: 1. ...

  6. 理解MySQL数据库覆盖索引 (转)

    http://www.cnblogs.com/zl0372/articles/mysql_32.html 话说有这么一个表: CREATE TABLE `user_group` ( `id` int( ...

  7. 理解MySQL数据库事务-隔离性

    Transaction事务是指一个逻辑单元,执行一系列操作的SQL语句. 事务中一组的SQL语句,要么全部执行,要么全部回退.在Oracle数据库中有个名字,叫做transaction ID 在关系型 ...

  8. MySQL(二):快速理解MySQL数据库索引

    索引 基本概念:索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 数据结构 Tree 指的是 Balance Tree,也就是平衡树.平衡树是一颗查找树,并 ...

  9. Django之mysql数据库配置

    在settings.py中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'my ...

随机推荐

  1. 我写了一起 Makefile(一)

    我写了一起 Makefile  陈皓 概述—— 什么是makefile?也许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作.但我认为要作一个好的和pro ...

  2. hdu4670(树上点分治+状态压缩)

    树上路径的f(u,v)=路径上所有点的乘积. 树上每个点的权值都是由给定的k个素数组合而成的,如果f(u,v)是立方数,那么就说明f(u,v)是可行的方案. 问有多少种可行的方案. f(u,v)可是用 ...

  3. Windows Phone开发(10):常用控件(上)

    原文:Windows Phone开发(10):常用控件(上) Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如 ...

  4. 【原创】poj ----- 2376 Cleaning Shifts 解题报告

    题目地址: http://poj.org/problem?id=2376 题目内容: Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K ...

  5. Codeforces Round #256 (Div. 2) A. Rewards

    A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  6. LeetCode204:Count Primes

    Description: Count the number of prime numbers less than a non-negative number, n. 比计算少n中素数的个数. 素数又称 ...

  7. C#高性能TCP服务

    C#高性能TCP服务 哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!& ...

  8. 【原创】一个基于简单剪枝的DFS解数独程序

    问题来源:leetCode Sudoku Solver Write a program to solve aSudoku puzzle by filling the empty cells. Empt ...

  9. HTML介绍JS

    首先,该脚本的链接插入HTML代码: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2h1aVRpYW5OYWlMdW8=/font/5a6L5L2T/f ...

  10. Godaddy Drupal Update

    Godaddy对Drupal默认安装仅仅支持到7.22,眼下Drupal已经升级到7.28,安装完Drupal 7.22后,仅仅能手工升级. 安装Drupal在:https://hostingconn ...