mysql数据库+java实现事务控制工作笔记

16 篇文章 0 订阅
一、mysql数据库+java实现事务控制,防止程序异常时数据库产生错误数据支持事务回滚

1、创建数据库数据表时添加引擎代码如下:

CREATE TABLE `uchome_happyfarm_config` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


2mysql数据库配置文件

windows下是my.ini

linux下是my.cnf

         mysql 的配置文件在/etc/my.cnf

    PS

         1linux下查找文件位置

         locate my.cnf就出来了(没有的话先updatedb

         find / -name 你要找的文件(my.cnf)


3、更改数据表引擎类型 ALTER TABLE `table` ENGINE = MYISAM

缺少InnoDb数据库引擎。有三种解决方法,总结如下:

1、修改SQL语句中的引擎InnoDBMyISAM,一般MyISAM都是启用的。

2、修改MySQL安装目录下的my.ini,在skip-innodb前增加#,重启MySQL,然后用show engines命令查看InnoDB的值是不是yes

3、停掉mysql服务,然后删除ib_logfile0ib_logfile1文件,重启。记住删除前备份一下,免得出现不可预料的错误

 

连接MYSQL方法:

   格式: mysql -h主机地址 -u用户名-p用户密码

1、例1:连接到本机上的MYSQL

   找到mysql的安装目录,一般可以直接键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

2、连接到远程主机上的MYSQL

   假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:

   mysql -h10.0.0.1 -uroot -p123

  (注:uroot可以不用加空格,其它也一样)

3、退出MYSQL命令

   exit (回车)

java代码:        

conn.setAutoCommit(false);//

Savepoint savept = conn.setSavepoint();//设置事务保存点用于数据库回滚

try {

         conn.commit();

         conn.setAutoCommit(true);// 恢复JDBC事务的默认提交方式                                        

} catch (Exception e) {

         try {

               conn.rollback(savept);

         } catch (SQLException e1) {

               e1.printStackTrace();

         }

         logger.info(e);//log记录日志

         e.printStackTrace();

         StringWriter out = new StringWriter();

         e.printStackTrace(new PrintWriter(out));

         request.setAttribute("err_msg", out.toString());

         String dist = "/application/message/error.jsp";

         forward(request, response, dist);                      

 }


 mysql 表类型说明


数据库锁

页级:引擎 BDB。
表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行
行级:引擎 INNODB , 单独的一行记录加锁

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAMIndexed Sequential Access Method (有索引的顺序访问方法的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。 MyISAM表格可以被压缩,而且它们支持全文搜索。它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECTMyISAM是更好的选择。

 

InnoDB:这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的INSERTUPDATE,出于性能方面的考虑,应该使用InnoDB表。

 

对于支持事物的InnoDB类型的标,影响速度的主要原因是autocommit,默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。


Mysql 命令

show engines;-- 查看数据库引擎使用情况

show create table `app`.`hr_dimission_check_list` ;       -- 查看表的编码类型

show table status like tablename\G -- 显示表的当前状态值

 

 

 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值