mysql事务是事务

事务

事务的概念:
从数据的角度讲:即一组同步执行且未提交的sql dml语句,这是数据库操作的一个单元!
事务开始于DML语句,结束于commit或rollback语句。【DDL,DCL会自动执行commit语句】。

事务的四大特点:(ACID)
atomicity:原子性,表示事务内的操作为一个整体,要么全部成功,or fail.
consistency:一致性,一个事物内的一个操作失败,所有的更改都会回滚到修改前的状态。
durablity:持久性,事务完成后,事务内的操作存入系统,为永久性的。!
isolation:隔离性,当他的隔离性级别为读取已提交时(read committed),即事务内sql语句操作表时,别的事务一般就不能操作该表。
隔离性的级别 :
读取未提交(read uncommitted(可操作)), 这种级别DML操作回滚的话可以返回操作。不安全!
读取已提交(read committed ),即DML操作如果未提交,其他用户就无法看到数据。
可重复读取(repeated read),
序列化(serializable);
从上至下,效率降低。但是安全性更高。
查看隔离级别:select @@tx_isolation;
设置隔离界别:set session trasaction isolation level (read uncommitted);

public static void main(String[] args) {
        Connection conn = null;
        Statement sta = null;
        ResultSet rs = null;
        try {
            //加载
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/day08_class", "root", "root");
            //将事务设置为手动提交
            conn.setAutoCommit(false);
            //解释器
            sta = conn.createStatement();
//-------事务开始
            sta.executeUpdate("insert into goods values(1,'乔丹23',2300)");
            System.out.println("插入数据:乔丹");

            sta.executeUpdate("insert into goods values(2,'科比24',2400)");
            System.out.println("插入数据:科比");
//-------事务结束           
            conn.commit();

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
        }
}//end main

总结:事务就是一组同步执行且未提交的sql dml语句,他们要么一起执行成功,要么一起失败。


mysql的存储引擎

说到事务就不得不说下数据库存储引擎了(storage_engine)
查看引擎的sql有show engines或者show variables like ‘storage_engine%’;

1,innodb:这是mysql的默认存储引擎。它支持事物,行锁 ,对于数据的增删改效率较高
2,MyISAM:该引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)。
简单来说:MyISAM拥有较高的插入、查询速度,但不支持事物
3,merory:该引擎创建数据会直接创建到内存当中,为查询和引用其他表数据提供快速访问。

猜你喜欢

转载自blog.csdn.net/eternal1d/article/details/77871147