• MySQL的InnoDB事务


    选择正确的存储引擎
    以 MySQL为例,包括有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。
    MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到update操作完成。
    另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
    InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。
    但是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

    事务的四个特性

      1、原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单位

      2、一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。

      3、隔离性(isolation)一个事务的影响在该事务提交之前对其他事务都不可见------这通过锁来实现

      4、持久性(durability)事务一旦提交,其结果就是永久性的

    事物的概念,记也记不住,直接实践理解得了。
    <?php header("Content-type: text/html; charset=utf-8"); $link_id = @mysql_connect('localhost', 'root', ''); if (!$link_id) { die('连接服务器失败'); } $db = @mysql_select_db('test', $link_id); //确认自己数据库引擎是InnoDB的 if (!$db) { die('连接数据库失败'); } /*if (!@mysql_query("set names 'utf8'", $link_id)) { die('设置utf8格式失败'); }*/ $sql1 = "UPDATE 5_user SET sex = '2' WHERE user_id = '274'"; $sql2 = "UPDATE 5_user SET telephone = '134255' WHERE user_id = '274' AND sex = '5'"; mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行,1是自动提交...这里就会遇到问题 mysql_query("BEGIN");//开始事务定义 if(!mysql_query($sql1)){ mysql_query("ROOLBACK");//判断当执行失败时回滚 return false; } if(!mysql_query($sql2)){ mysql_query("ROOLBACK");//判断执行失败回滚 return false; } mysql_query("COMMIT");//执行事务 mysql_close($link_id);
  • 相关阅读:
    api接口安全
    php读取大文件
    thinkphp5.0的工作流程
    php扩展包索引
    redis学习之持久化与内存淘汰机制
    mysql优化之分区
    简练软考知识点整理-控制干系人参与
    简练软考知识点整理-控制干系人参与
    简练软考知识点整理-管理干系人参与
    简练软考知识点整理-管理干系人参与
  • 原文地址:https://www.cnblogs.com/sunscheung/p/4626763.html
Copyright © 2020-2023  润新知