mysql事务

TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘

半腔热情 提交于 2019-11-28 21:48:31
原文出处: 阿里云RDS-数据库内核组 HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OLAP)混合场景的关系型数据库。HybridDB采用一份数据存储来进行OLTP和OLAP处理,解决了以往需要把一份数据多次复制来分别进行业务交易和数据分析的问题,极大地降低了数据存储的成本,缩短了数据分析的延迟,使得实时分析决策称为可能。 HybridDB for MySQL兼容MySQL的语法及函数,并且增加了对Oracle常用分析函数的支持,100%完全兼容TPC-H和TPC-DS测试标准,从而降低了用户的开发、迁移和维护成本。 TokuDB是TokuTek公司(已被 Percona收购)研发的新引擎,支持事务/MVCC,有着出色的数据压缩功能,支持异步写入数据功能。 TokuDB索引结构采用fractal tree数据结构,是buffer tree的变种,写入性能优异,适合写多读少的场景。除此之外,TokuDB还支持在线加减字段,在线创建索引,锁表时间很短。 Percona Server和Mariadb支持TokuDB作为大数据场景下的引擎,目前官方MySQL还不支持TokuDB。ApsaraDB for MySQL从2015年4月开始支持TokuDB,在大数据或者高并发写入场景下推荐使用。 TokuDB优势 数据压缩

MySQL事务问题

筅森魡賤 提交于 2019-11-28 21:40:21
并发事务问题 每个客户端和服务器的一次连接,就是一个会话,而每个客户端可以在自己的会话中发出事务请求,一般来说一个服务器可以连接若干个客户端,所以一个服务器可以同时处理很多事务请求,但理论上某个事务在对某个数据在进行访问时,其他事务应该排队等待。但这样在高并发下会严重影响性能,所以只能设计事务隔离级别来兼顾事务的隔离性和提高多个事务的性能。 事务问题 如果事务执行不保证串行执行,也就是并发执行会遇到以下几个问题: 脏写:一个事务修改了另一个未提交事务修改过的数据 脏读:一个事务读到另一个未提交事务修改过的数据 不可重复读:一个事务能读到其他已提交事务修改过后的值,并且每次其他事务修改并提交,该事务都能查到最新值,但我们其实需要的是第一次读的那个值 幻读:一个事务先根据某些条件查询出一个范围的记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来,即读到了之前没有读到的记录 隔离级别 根据这几个问题,SQL标准设计了4个隔离级别,在不同程度上禁止了这些问题的发生。 READ UNCOMMITTED 隔离级别下,可能发生 脏读 、 不可重复读 和 幻读 问题。 READ COMMITTED 隔离级别下,可能发生 不可重复读 和 幻读 问题,但是不可以发生 脏读 问题。 REPEATABLE READ 隔离级别下,可能发生

JDBC06 事务

喜夏-厌秋 提交于 2019-11-28 20:31:06
事务 事务基本概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元(比如:银行中,对账户的操作和日志的记录是一组事务) 事务开始于: -连接到数据库上,并执行一条DML语句(INSERT、UPDATE或DELETE) -前一个事务结束后,又输入了另外一条DML语句 事务结束于: -执行COMMINT或ROLLBACK语句 -执行一条DDL语句,例如CREAT TABLE语句;在这种情况下,会自动执行COMMIT语句 -断开与数据库的连接 -执行了一条DML语句,该语句却失败了;在这种情况中,会为这个无效的DML语句执行ROLLBACK语句 事务的四大特点(ACID): atomicity(原子性):表示一个事务内所有的操作是一个整体,要么全部成功,要么全部失效 consistency(一致性):表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态 isolation(隔离性):事务查看数据时数据所处的状态,要么是另一并发事务修改前他的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据 (事务隔离级别从低到高:(读取未提交Read Uncommitted,读取已提交Read Commintted,可重复读Repeatable Read,序列化serializable)) durability(持久性)

MariaDB基本知识点总结

ぃ、小莉子 提交于 2019-11-28 20:08:41
一.概念 1.数据库介绍: 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。 2.关系型数据库VS非关系型数据库 (1).关系型数据库: 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表) 如:oracle,db2,sqlserver,mysql,mariadb 优点: 易于维护:都是使用表结构,格式一致; 使用方便:SQL语言通用,可用于复杂查询; 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 读写性能比较差,尤其是海量数据的高效率读写; 固定的表结构,灵活度稍欠; 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。 (2).关系型数据库: 非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,因此nosql的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。 如:mongodb,redias 优点: 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等

MySQL重要知识点/面试题总结

≯℡__Kan透↙ 提交于 2019-11-28 20:05:37
这篇文章是作者利用几天时间对MySQL知识点总结完善后的产物,可以用来回顾MySQL基础知识以及备战MySQL常见面试问题。 什么是MySQL? MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL的默认端口号是3306。 事务相关 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。 事物的四大特性(ACID)介绍一下? 原子性 : 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性 : 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性 : 并发访问数据库时,一个用户的事务不被其他事务所干扰

事务问题

偶尔善良 提交于 2019-11-28 19:46:37
本文只是作者整理的笔记,摘抄自他人 原文链接:https://blog.csdn.net/zjxxyz123/article/details/79413729 事务总结: 事务的特性:★★★ ACID 原子性:事务里面的操作单元不可切割,要么全部成功,要么全部失败 一致性:事务执行前后,业务状态和其他业务状态保持一致. 隔离性:一个事务执行的时候最好不要受到其他事务的影响 持久性:一旦事务提交或者回滚.这个状态都要持久化到数据库中 不考虑隔离性会出现的读问题 脏读:在一个事务中读取到另一个事务没有提交的数据 不可重复读:在一个事务中,两次查询的结果不一致(针对的update操作) 虚读(幻读):在一个事务中,两次查询的结果不一致(针对的insert操作) 通过设置数据库的隔离级别来避免上面的问题(理解) read uncommitted 读未提交 上面的三个问题都会出现 read committed 读已提交 可以避免脏读的发生 repeatable read 可重复读 可以避免脏读和不可重复读的发生 serializable 串行化 可以避免所有的问题 起初隔离级别为read uncommitted 读未提交;a,b两个会话,分别开启两个事务,然后a向b转了500元钱,但a未提交该事务, 此时b查看,发现多了500.然后a回滚事务,b再查看账户,发现根本就没有多500.这便是脏读

MySQL事务,这篇文章就够了

风格不统一 提交于 2019-11-28 18:56:59
原文链接:https://blog.ouyangsihai.cn/ >> MySQL事务,这篇文章就够了 在看这篇文章之前,我们回顾一下前面的几篇关于MySQL的系列文章,应该对你读下面的文章有所帮助。 InnoDB与MyISAM等存储引擎对比 面试官问你B树和B 树,就把这篇文章丢给他 MySQL的B 树索引的概念、使用、优化及使用场景 MySQL全文索引最强教程 MySQL的又一神器-锁,MySQL面试必备 0 什么是事务 事务(Transaction) 是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都 执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每 个事务结束时,都能保持数据一致性。 同时,事务有着严格的地定义,必须满足四个特性,也就是我们一直说的ACID,但是,并不是说各种数据库就一定会满足四个特性,对于不同的数据库的实现来说,在不同程度上是不一定完全满足要求的,比如,Oracle数据库来说,默认的事务隔离级别是 READ COMMITTED ,是不满足隔离性的要求的。 下面我们趁热打铁,介绍一下事务的必知必会的四大特性,这几个特性也是在面试中,面试官面试MySQL的相关知识的时候,问的比较多的问题,所以,这几个特性务必需要理解并且透彻的记在心里,开个玩笑,被火车撞了,也不应该忘记这四个特性! 1 事务的四大特性

Mysql的sql优化方法

人走茶凉 提交于 2019-11-28 18:51:36
1、选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度舍得尽可能小。 例如:在定义邮政编码这个字段时,如果将其设置为char(255),显然给数据库增加了不必要的空间,甚至使用varchar这种类型也是多余的,因为char(6)就可以很好地完成了任务。同样的如果可以的话,我们应该是用MEDIUMINT而不是BIGINT来定义整形字段。 2、尽量把字段设置为NOT NULL 在可能的情况下,尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。对于某些文本字段来说,例如“省份”或者“性别”,我们可以将他们定义为ENUM(枚举)类型。因为在MySQL中,ENUM类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型要快得多。这样我们又可以提高数据库的性能。 3、使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用select语句来创建一个单例的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如:我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户id取出来

数据库事务

拈花ヽ惹草 提交于 2019-11-28 17:41:09
一、事务的基本要素( ACID )    1 、原子性( Atomicity ):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。    2 、一致性( Consistency ):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如 A 向 B 转账,不可能 A 扣了钱, B 却没收到。    3 、隔离性( Isolation ):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如 A 正在从一张银行卡中取钱,在 A 取钱的过程结束前, B 不能向这张卡转账。    4 、持久性( Durability ):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。 二、事务的并发问题    1 、脏读:事务 A 读取了事务 B 更新的数据,然后 B 回滚操作,那么 A 读取到的数据是脏数据    2 、不可重复读:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取的过程中,对数据作了更新并提交,导致事务 A 多次读取同一数据时,结果 不一致。    3 、幻读:系统管理员 A 将数据库中所有学生的成绩从具体分数改为 ABCDE 等级,但是系统管理员 B

【04】MySQL:存储引擎

南笙酒味 提交于 2019-11-28 17:28:46
写在前面的话 在使用 Linux 的时候,可以经常听到有关文件系统 FS(File System)的东西,MySQL 也有属于自己类似的东西,那就是存储引擎。之前在创建数据表的时候,在 Create table 后面一般都加了 engine=innodb。这就是指定存储引擎。 关于存储引擎 可以将存储引擎就当作 Linux 而言的文件系统,其主要功能在于:数据读写 / 安全 / 一致性,提升读写性能,提供热备份,自动故障恢复,高可用等。 需要知道的存储引擎大致有: InnoDB , MyISAM , MEMORY ,ARCHIVE, CSV , BLACKHOLE ,MERGE,NDBCLUSTER,EXAMPLE 等 查看数据库支持的存储引擎: show engines; 结果: 值得注意的是,存储引擎针对的对象是表,这意味着一个库中,可能存在多种存储引擎,例如: select TABLE_NAME,ENGINE from information_schema.tables where TABLE_SCHEMA="mysql"; 结果: 对于 MySQL 的两大分支 Percona 和 MariaDB 的存储引擎: Percona:默认 XtraDB MariaDB:默认 InnoDB 同样也有其它的存储引擎:TokuDB,RocksDB,MyRocks 等。