mysql事务

分布式事务

北慕城南 提交于 2019-12-01 10:24:50
在说分布式事务之前,先回顾下事务的相关知识点。 事务 概念 事务指的是一系列数据库操作,它是保证数据库正确性的基本逻辑单元,拥有ACID四个特性:原子性、一致性、隔离性与持久性。 举个例子,下面这两种组成情况都叫做事务: 1.由单个操作序列(一条SQL语句)组成的事务 select * from test; 2.由多个操作序列(SQL语句)组成的事务 select * from test where id = 1; update test(id, name) set name = 'john' where id = 1; 当然,如果我们没有显示声明事务的话,数据库则会给我们自动地划分事务,对于MySQL来说,没有显示声明事务,则一条SQL语句就是一个事务,执行完便会自动提交。 一个事务由开始标识(begin_transaction)、数据库操作和结束标识(commit或rollback)三部分组成。如下图所示: 关于上图的相关说明如下: 事务开始:begin_transaction,说明事务的开始; 数据库上的操作:表现为一条或多条SQL语句; 事务提交:commit_transaction,提交事务操作,操作生效; 事务回滚:rollback_transaction,事务取消,操作废弃。 特性 事务是对数据库的一系列操作,是保证数据库正确性的基本逻辑单元

2019最新整理PHP面试题附答案

自作多情 提交于 2019-12-01 10:23:57
1、什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。 2、SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明? A、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。 B、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。 禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。 3、HTTP 状态中302、403、 500代码含义? 一二三四五原则:(即一:消息系列;二:成功系列; 三:重定向系列;四:请求错误系列;五:服务器端错误系列。) 302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401:代表未授权。 4、请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和

Python后端技术栈(六)--数据库

天涯浪子 提交于 2019-12-01 10:19:46
每日分享 What makes you different or weird—that’s your strength. 那些让你与众不同或怪异的,就是你的力量所在。 1.6数据库 上篇文章对网络编程中的一些经典问题做了总结,比如各种网络协议、IO 多路复用模型、并发库等等。 本篇文章将开始数据库的相关内容,开始咯~ 1.6.1 MySQL 1.6.1.1 MySQL 基础知识点 1.事务的原理,特性,事务并发控制 2.常用的字段、含义和区别 3.常用数据库引擎之间区别 1.6.1.2事务 Transaction 1.事务是数据库并发控制的基本单位 2.事务可以看做是一系列 SQL 语句的集合 3.事务的特性就是要么全部执行成功,要么全部执行失败(回滚) 我们最常见的就是转账操作这样一个使用案例。比如 A 给 B 转账,第一步是从 A 的账户查询一下余额还够不够,然后扣款。第二步是 B 的账户里面增加对应的金额。 从代码的层面来说,下面举一个 SQLAlchemy 框架执行回滚操作的例子: session.begin() try: item1 = session.query(Item).get(1) item2 = session.query(Item).get(2) item1.foo = 'bar' item2.bar = 'foo' session.commit()

mysql主从复制简介

五迷三道 提交于 2019-12-01 10:18:00
MySQL Replication概述: mysql replication俗称MySQL AB 复制或者主从复制,是mysql官方推荐的数据同步技术。 优点: 1.通过增加从服务器来提高数据库平台的可靠性,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而缓解主服务器平台的高性能 2.提高数据安全性,因为数据已复制到从服务器,主服务器数据异常时,可以将从服务器复制进程终止来达到保护数据完整性的特点。 3.在主服务器上生成实时数据,而在从服务器上分析这些数据,从而缓解主服务器的性能。 MySQL复制类型: 异步复制: mysql默认的复制就是异步,主库在执行完客户端提交的实务后会立即将结果返给客户端,并不关心从库是否已经接受并处理。 全同步复制: 当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然受到严重影响,返回客户端的响应速度会被拖慢。 半同步复制: 主库在执行完客户端提交的事务后不是立即返回给客户端,而是至少一个从库接收到并写入到relay log 中才返回给客户端。相对于异步复制,半同步复制 提高了数据的安全性,同时也造成了一定程度的延迟,这个延迟做少是一个TCP/IP往返的时间。所以半同步最好在低延时的网络中使用。当出现超时情况时

asp.net core learn

无人久伴 提交于 2019-12-01 10:09:55
.NET Core WebApi RESTful规范 RESTful API 最佳实践 理解RESTful架构 接口版本控制 Support multiple versions of ASP.NET Core Web API ASP.NET Core API 版本控制 配置使用流程 使用方法 Startup类ConfigureServices方法中加入services.AddApiVersioning() Startup类Configure方法中加入app.UseApiVersioning() 控制器或接口上面应用添加ApiVersion("1.0")特性。 访问形式 通过查询字符串方式实现访问,具体格式: api/values?api-version=1.0 通过重写接口路由方式实现访问,路由修改为:[Route("api/v{version:apiVersion}/[controller]")];具体格式: api/v1/values 通过Header指定字段实现访问。 Swagger .NetCore WebApi —— Swagger版本控制 .NetCore WebApi——Swagger简单配置 跨域策略 依赖注入 ASP.NET Core依赖注入使用自带的IOC容器 ASP.NET Core使用Autofac实现IOC注入 ASP.NET

MySQL数据库事务隔离级别(Transaction Isolation Level)

风格不统一 提交于 2019-12-01 09:33:31
数据库隔离级别有四种,应用《高性能mysql》一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE- READ, SERIALIZABLE. 2 [mysqld] 3 transaction-isolation = REPEATABLE-READ 这里全局默认是REPEATABLE-READ,其实MySQL本来默认也是这个级别 2.对当前session修改,在登录mysql客户端后,执行命令: 要记住mysql有一个autocommit参数,默认是on,他的作用是每一条单独的查询都是一个事务,并且自动开始,自动提交(执行完以后就自动结束了,如果你要适用select for update,而不手动调用 start transaction,这个for update的行锁机制等于没用,因为行锁在自动提交后就释放了),所以事务隔离级别和锁机制即使你不显式调用start transaction,这种机制在单独的一条查询语句中也是适用的,分析锁的运作的时候一定要注意这一点 再来说说锁机制: 共享锁 :由读表操作加上的锁,加锁后其他用户只能获取该表或行的共享锁,不能获取排它锁,也就是说只能读不能写 排它锁 :由写表操作加上的锁

MongoDB 走马观花(全面解读篇)

喜夏-厌秋 提交于 2019-12-01 09:32:28
目录 一、简介 二、基本模型 BSON 数据类型 分布式ID 三、操作语法 四、索引 索引特性 索引分类 索引评估、调优 五、集群 分片机制 副本集 六、事务与一致性 一致性 小结 一、简介 MongoDB 是一款流行的开源文档型数据库,从它的命名来看,确实是有一定野心的。 MongoDB 的原名一开始 来自于 英文单词"Humongous", 中文含义是指"庞大" ,即命名者的意图是可以处理大规模的数据。 但笔者更喜欢称呼它为 "芒果"数据库,除了译音更加相近之外,原因还来自于这几年使用 MongoDB 的两层感觉: 第一层感受是"爽",使用这个文档数据库的特点是几乎不受什么限制,一方面Json文档式的结构更容易理解,而无Schema约束也让DDL管理更加简单,一切都可以很快速的进行。 第二层感受是"酸爽",这点相信干运维或是支撑性工作的兄弟感受会比较深刻,MongoDB 由于入门体验"太过于友好",导致一些团队认为用好这个数据库是个很简单的事情,所以开发兄弟在存量系统上埋一些坑也是正常的事情。 所谓交付一时爽,维护火葬场.. 当然了,这句话可能有些过。 但这里的潜台词是:与传统的RDBMS数据库一样,MongoDB 在使用上也需要认真的考量和看护,不然的化,会遇到更多的坑。 那么,尽管文档数据库在选型上会让一些团队望而却步,仍然不阻碍该数据库所获得的一些支持,比如 DB

17、事务

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

MYSQL 八大优化方案

筅森魡賤 提交于 2019-12-01 08:43:26
1、选取最适用的字段属性 ​ MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 ​ 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 ​ 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 2、使用连接(JOIN)来代替子查询(Sub-Queries) ​ MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询

java_第一年_JDBC(5)

时光怂恿深爱的人放手 提交于 2019-12-01 08:18:33
事务概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功; 开始事务:start transaction 提交事务:commit 回滚事务:rollback 事务的四大特性 原子性:是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态 隔离性:多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离 持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响 隔离性可能会引起的问题 脏读:脏读指一个事务读取了另外一个事务未提交的数据 不可重复读:不可重复读指在一个事务内读取表中的某一行数据,多次读取结果不同;所操作的数据被别的事务操作,通过给操作数据加行锁即可; 虚读(幻读):是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致;操作的数据被别的事务所插入,仅通过行锁并不能解决; 四种隔离级别 针对上述所说的隔离性问题,mysql数据库共定义了4种隔离级别 查询隔离级别:select @@tx_isolation; 设置隔离级别:set transaction isolation level 隔离级别名; Read uncommitted(读未提交)