mysql事务

Mysql--锁

[亡魂溺海] 提交于 2019-11-29 04:42:31
锁目的 解决并发情况下资源抢夺问题, 维护数据的⼀一致性 mysql的锁虽然开发者可以⼿手动设置, 但⽐比较影响并发性, ⼀一般会 使⽤用 乐观锁 代替 ( 如Django中 到库存问题) 由于mysql会⾃自动使⽤用锁, 所以需要了了解锁机制, 以便便优化数据库并发能⼒力力 粒度/覆盖范围 表级锁 对整个表锁定, 并发差, 资源消耗少 行级锁 对数据⾏行行锁定, 并发好, 资源消耗多 不同数据库引擎⽀支持的锁也不不同 MyISAM (5.5之前默认) ⽀支持表级锁 InnoDB ⽀支持⾏行行级锁和表级锁 锁和事务 ⽆无论操作是否在事务中, 都可以获取锁, 只不不过在事务中, 获取的锁只有执⾏行行完事务才会释放 MyISAM 只⽀支持表级锁 表读锁/共享锁 获取后, 其他请求可以读不不能写 表写锁/排它锁 获取后, 其他请求既不不能读也不不能写 加锁⽅方式 数据库⾃自动管理理, SELECT前给涉及的表添加读锁, 更更新前(增删改)给涉及的表加写锁 来源: https://www.cnblogs.com/oklizz/p/11453780.html

redis 小弟入门

我的梦境 提交于 2019-11-29 04:20:54
概念背景: 传统数据酷MySQL,采用遵循 ACID规则 事务的原子性(Atomicity) :是指一个事务要么全部执行,要么不执行,也就是说一个事务不可能只执行了一半就停止。 事务的一致性(Consistency) :是指事务的运行并不改变数据库中数据的一致性。 独立性(Isolation) :事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态。 持久性(Durability) :事务的持久性是指事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故回滚。 Redis 非关系型数据库,遵循的是 CAP原理 、 Availability(可用性)、Partition tolerance(分区容错性) 一致性(C):在 分布式系统 中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性(A):在 集群中 一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备 高可用性 ) 分区容错性(P):以 实际效果 而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。 Redis 类型不多,也很奇葩,也很好用 String set key value string类型是二进制安全的

MySQL MVCC && 事务隔离级别 && 锁

与世无争的帅哥 提交于 2019-11-29 03:34:16
MySQL MVCC && 事务隔离级别 && 锁 InnoDB多版本并发控制——MVCC http://my.oschina.net/xinxingegeya/blog/208821 MySQL_S锁_X锁_read lock_write lock http://my.oschina.net/xinxingegeya/blog/215417 MySQL事务隔离级别 http://my.oschina.net/xinxingegeya/blog/215419 MySQL命令行控制事务 http://my.oschina.net/xinxingegeya/blog/296459 MySQL REPEATABLE-READ && 幻读 http://my.oschina.net/xinxingegeya/blog/296513 MySQL/InnoDB锁机制 http://my.oschina.net/xinxingegeya/blog/296591 MySQL事务隔离级别之REPEATABLE-READ http://my.oschina.net/xinxingegeya/blog/296612 MySQL锁表_LOCK TABLES_UNLOCK TABLES http://my.oschina.net/xinxingegeya/blog/341593 MySQL

MySQL 事务

空扰寡人 提交于 2019-11-29 03:24:46
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 事务用来管理 insert,update,delete 语句 一般来说,事务是必须满足4个条件(ACID)::原子性( A tomicity,或称不可分割性)、一致性( C onsistency)、隔离性( I solation,又称独立性)、持久性( D urability)。 原子性: 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性: 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 隔离性: 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致

Hibernate入门这一篇就够了

偶尔善良 提交于 2019-11-29 02:43:22
Hibernate入门这一篇就够了 前言 本博文主要讲解 介绍Hibernate框架,ORM的概念和Hibernate入门 ,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping ,在Java对象与关系数据库之间 建立某种映射,以实现直接存取Java对象 ! 为什么要使用Hibernate? 既然Hibernate是关于Java对象和关系数据库之间的联系的话,也就是 我们MVC中的数据持久层->在编写程序中的DAO层... 首先,我们来回顾一下我们在DAO层写程序的历程吧: 在DAO层操作XML,将数据封装到XML文件上,读写XML文件数据实现CRUD 在DAO层使用原生JDBC连接数据库,实现CRUD 嫌弃JDBC的Connection\Statement\ResultSet等对象太繁琐,使用对原生JDBC的封装组件-->DbUtils组件 我们来看看使用DbUtils之后,程序的代码是怎么样的: public class CategoryDAOImpl implements zhongfucheng.dao.CategoryDao{ @Override publicvoidaddCategory(Category category) {

mysql事务和锁

孤街醉人 提交于 2019-11-29 02:41:44
尝试进行归纳总结事务和锁的一些思考. 数据库是什么? 保存数据的地方. 为什么保存数据要用数据库呢? 我直接把数据放文件里, 不也一样吗? 比如我自己序列化json文件保存成txt文件成不? 也行, 但是就不方便检索, 之类的. 数据库就方便检索了呀, 数据库相比文件系统有4个特点: A - 原子性 C - 一致性 I - 隔离性 D - 持久性 这里只说锁, 锁是用来保证隔离性的. 隔离性是啥? 比如, 我现在自己实现了一个不怎么完善的数据库, 只是按SQL标准实现了增删改查等命令, 但是操作的数据是直接落实到系统的文件上的. 同时, 要知道SQL标准也规定了4种数据库事务隔离级别, 别急, 我们这个不完善的数据库没有实现事务隔离级别, 也没有实现任何锁, 仅仅是我们知道有这么个东西而已, 暂时不打算去实现它^_^ 虽然我们没有实现它, 但还是可以从事务的角度来进行一下思考, 也就是说我们假想事务这么个东西, 可以启动事务, 提交事务和回滚事务. 假设两个事务--A, B, 说明以下几种存在的问题: 脏读 - A事务启动, 先读取一行, 值为1, 还没提交, B事务启动, 修改了A刚刚读取的那一行, 修改为2, 注意, 没有锁, 虽然在我们的想像中, B还没有提交, 但是anyway, B就是直接就把修改写到文件里了, 然后A再读取这一行, 值是2.

MySQL中的锁

孤街醉人 提交于 2019-11-29 02:02:16
MySQL中的锁 https://www.cnblogs.com/chenqionghe/p/4845693.html 锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。 MySQL大致可归纳为以下3种锁: 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 表级锁 MySQL表级锁有两种模式:表共享锁(Table Read Lock)和表独占写锁(Table Write Lock) 对MyISAM的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求 对MyISAM的写操作,则会阻塞其他用户对同一表的读和写操作 MyISAM表的读操作和写操作之间,以及写操作之间是串行的

jpa01

烂漫一生 提交于 2019-11-29 01:59:48
JPA Java Persistence API, 即Java 持久化API JPA规范本质上就是一种ORM规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现。 入门案例 1.创建maven ,导入坐标 2.配置jpa的核心配置文件,创建在META-INFO目录下,persistence.xml 3.编写客户实体类 4.配置实体类和表 5.保存 pom.xml 1 <properties> 2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 3 <project.hibernate.version>5.0.7.Final</project.hibernate.version> 4 </properties> 5 6 <dependencies> 7 <!-- junit --> 8 <dependency> 9 <groupId>junit</groupId> 10 <artifactId>junit</artifactId> 11 <version>4.12</version> 12 <scope>test</scope> 13 </dependency> 14 15 <!-- hibernate对jpa的支持包 --> 16 <dependency> 17 <groupId

MySQL锁表查询SQL

偶尔善良 提交于 2019-11-29 01:46:46
// 查看进程 SHOW PROCESSLIST; // 查看是否锁表 SHOW OPEN TABLES WHERE In_use > 0; // 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; // 查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 来源: https://www.cnblogs.com/mzq123/p/11438259.html

MySQL之存储引擎

不想你离开。 提交于 2019-11-29 01:44:00
MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。 这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。 选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。 遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了 2.MySQL结构 MySQL架构总共四层