mysql事务

数据库的事务隔离级别

人盡茶涼 提交于 2020-03-17 19:14:15
目录 1 脏读 2 不可重复读 3 幻读 数据库的事务隔离级别 读未提交(Read Uncommitted) 读提交(Read Committed) 可重复读(Repeated Read) 串行化(Serializable) 总结 丢失更新 :两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的 1 脏读 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 2 不可重复读 不可重复读 是指在一个事务内,多次读同一数据。 在这个事务还没有结束时,另外一个事务也访问该同一数据。 那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。 这样在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。 3 幻读 幻读 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。 那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样 数据库的事务隔离级别 什么是事务隔离? 任何支持事务的数据库,都必须具备四个特性

数据库常见面试题(非DBA方向)

南楼画角 提交于 2020-03-17 11:47:07
数据库面试题总结之一 1.什么是事务?以及四个特性 事务(Transaction)是并发控制的基本单位。 所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。 事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。 ACID 原子性:要么执行,要么不执行,也就是不可再分,已经最小了。 隔离性:所有操作全部执行完以前其它会话不能看到过程。 一致性:事务前后,数据总额一致。 持久性:一旦事务提交,对数据的改变就是永久的 事物的语句: 1.开始事务:BEGIN TRANSACTION 2.提交事务:COMMIT TRANSACTION 3.回滚事务:ROLLBACK TRANSACTION 2.索引是什么?有哪些作用和优缺点 索引就一种特殊的查询表,数据库的搜索可以利用它加速对数据的检索。 它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。 索引可以是唯一的,创建索引允许指定单个列或者是多个列。 缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小 MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引 索引加快数据库的检索速度 索引降低了插入、删除、修改等维护任务的速度 唯一索引可以确保每一行数据的唯一性 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能

2018年5月5日笔记

女生的网名这么多〃 提交于 2020-03-17 08:55:09
Python DB-API Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口 Python DB-API 使用流程: 引入API模块 获取与数据库的连接 执行SQL语句和存储过程 关闭数据库连接 MySQLdb (python2) MySQLdb是用于python连接MySQL数据库接口的,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 安装MySQLdb Windows 安装MySQLdb,请参考 http://sourceforge.net/projects/mysql-python Linux安装MytSQLdb :请参考 https://pypi.python.org/pypi/MySQL-python ) 从以上链接可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。 如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令: 1 $ gunzip MySQL-python-1.2.2.tar.gz 2 $ tar -xvf MySQL-python-1.2.2.tar 3 $ cd MySQL-python-1.2.2 4 $ python

mySQL基础

爷,独闯天下 提交于 2020-03-17 07:45:03
mySQL 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、DQL语言的学习 ★ 基础查询 ★ 条件查询 ★ 排序查询 ★ 常见函数 ★ 分组函数 ★ 分组查询 ★ 连接查询 ★ 子查询 √ 分页查询 ★ union联合查询 √ 六、DML语言的学习 ★ 插入语句 修改语句 删除语句 七、DDL语言的学习 库和表的管理 √ 常见数据类型介绍 √ 常见约束 √ 八、TCL语言的学习 事务和事务处理 九、视图的讲解 √ 十、变量 十一、存储过程和函数 十二、流程控制结构 数据库的好处 1.持久化数据到本地 2.可以实现结构化查询,方便管理 数据库相关概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL:结构化查询语言,用于和DBMS通信的语言 数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 4、表由列组成

Python 操作 SQL 数据库 (ORCAL)

扶醉桌前 提交于 2020-03-16 18:37:14
MySQLdb.connect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单: host:MySQL服务器名 user:数据库使用者 password: 用户登录 密码 db:操作的数据库名 charset:使用的字符集(一般是gb2312) cursor = db.cursor() 其实就是用来获得python执行Mysql命令的方法,也就是 我们所说的操作游标 下面cursor.execute则是真正执行My SQL语句 ,即查询TABLE_PARAMS表的数据。 至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了 for(string row = ''; row<= cursor.fetchall(): row++) for(char r = ''; r<= row; r++) printf("%c", r); 大致就是这么个意思! 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb

python-操作MySQL数据库

帅比萌擦擦* 提交于 2020-03-16 18:36:55
1、安装MySQLdb? 为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb 如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块: Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb 安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-python ,(Linux平台可以访问: https://pypi.python.org/pypi/MySQL-python )从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。 如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令: $ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $

Python3 MySQL 数据库连接 -PyMySQL

我与影子孤独终老i 提交于 2020-03-16 18:36:32
Python 3 操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。 PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: $ pip install PyMySQL 如果你的系统不支持 pip 命令,可以使用以下方式安装: 1、使用 git 命令下载安装包安装(你也可以手动下载): $ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install 2、如果需要制定版本号,可以使用 curl 命令来安装: $

Python学习 Day16 Python3 MySQL 数据库

▼魔方 西西 提交于 2020-03-16 18:36:15
Python3 MySQL 数据库 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。 PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: $ pip install PyMySQL 如果你的系统不支持 pip 命令,可以使用以下方式安装: 1、使用 git 命令下载安装包安装(你也可以手动下载): $ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install 2、如果需要制定版本号,可以使用 curl 命令来安装: $ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball

Python3 MySQL 数据库连接

江枫思渺然 提交于 2020-03-16 18:35:51
PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。 PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: pip install PyMySQ 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 实例: 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute(

MySQL:5.6 大事务show engine innodb status故障一例

纵然是瞬间 提交于 2020-03-16 17:26:40
某厂面试归来,发现自己落伍了!>>> 导读: 作者:高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列文的作者。 今天遇到一个朋友的线上问题,大概意思就是说,我有一个线上的大事务大概100G左右,正在做回滚,当前看起来似乎影响了线上的业务,并且回滚很慢,是否可以减轻对线上业务的影响。并且朋友已经取消了双1设置,但是没有任何改观。版本MySQL 5.6首先我们需要知道的是,MySQL并不适合大事务,大概列举一些MySQL中大事务的影响: binlog文件作为一次写入,会在sync阶段消耗大量的IO,会导致全库hang主,状态大多为query end。 大事务会造成导致主从延迟。 大事务可能导致某些需要备份挂起,原因在于flush table with read lock,拿不到MDL GLOBAL 级别的锁,等待状态为 Waiting for global read lock。 大事务可能导致更大Innodb row锁加锁范围,导致row锁等待问题。 回滚困难。 基于如上一些不完全的列举,我们应该在线上尽可能的避免大事务。好了我们下面来进行问题讨论。 一、问题 前面已经说了,我们已经取消了双1设置,所谓的双1就是 sync_binlog=1和 innodb_flush_log_at_trx_commit=1。这两个参数线上要保证为1,前者保证binlog的安全