mysql数据库

mysql 查询正在执行的事务以及等待锁 常用的sql语句

青春壹個敷衍的年華 提交于 2020-03-19 00:20:08
使用navicat测试学习: 首先使用set autocommit = 0;(取消自动提交,则当执行语句commit或者rollback执行提交事务或者回滚) 在打开一个执行update 查询 正在执行的事务: SELECT * FROM information_schema.INNODB_TRX 根据这个事务的线程ID(trx_mysql_thread_id): 从上图看出对应的mysql 线程:一个94362 (第二个正在等待锁)另一个是93847(第一个update 正在执行 没有提交事务) 可以使用mysql命令:kill 线程id 杀掉线程 期间如果并未杀掉持有锁的线程:则第二个update语句提示等待锁超时 查询mysql数据库中还可以使用: 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 查询mysql数据库中存在的进程 [sql] view plain copy select * from information_schema.`PROCESSLIST`(show processlist;) 概念: mysql中database、instance、session。

Mysql联合,连接查询

点点圈 提交于 2020-03-18 20:08:29
一、 联合查询 UNION, INTERSECT, EXCEPT    UNION 运算符可以将两个或两个以上 Select语句的查询结果集合 合并成 一个 结果集合显示,即执行联合查询。UNION的语法格式为:        select_statement       UNION [ALL] selectstatement [UNION [ALL] selectstatement][…n]   其中selectstatement为待联合的Select查询语句。   ALL选项表示将所有行合并到结果集合中。 不指定该项时 ,被联合查询结果集合中的 重复行将只保留一行 。 联合查询时,查询结果的 列标题为第一个查询语句的列标题 。因此,要定义列标题必须在第一个查询语句中定义。要对联合 查询结果排序时 ,也必须使用 第一查询 语句中的列名、列标题或者列序号。 在使用UNION 运算符时,应保 证每个联合查询语句的选择列表中有相同数量的表达式 ,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。 在包括多个查询的UNION语句中,其 执行顺序是自左至右 ,使用 括号 可以 改变 这一 执行顺序 。例如: 查询1 UNION (查询2 UNION 查询3)   INTERSECT

转:Mysql使用主从复制机制(replication)

笑着哭i 提交于 2020-03-18 19:48:39
内容转自:http://blog.sina.com.cn/s/blog_4e424e2101000c1z.html;http://blog.sina.com.cn/s/blog_4e424e2101000c20.html MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将 更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知 下一次更新。 为什么使用主从复制? 1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器进行恢复。 2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。 3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。 主从复制的原理: MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另2个在从服务器上)。 第1个线程:当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。 第2个线程:

数据库的事务级别介绍与操作

泄露秘密 提交于 2020-03-18 19:38:21
关系型数据库都具有一套事务级别,以前的开发和学习过程我很少关注过这个概念,今天搜集了一些资料,在 结合spring声明式事务学习的同时,总结一下数据库的事务级别与操作。 READ-UNCOMMITTED: 未提交读 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 ) READ-COMMITTED: 提交读 会出现不可重复读、幻读问题(锁定正在读取的行) REPEATABLE-READ: 可重复读 会出幻读(锁定所读取的所有行) SERIALIZABLE: 序列化 保证所有的情况不会发生(锁表) 详细说明: 未提交读 ——这通常称为 'dirty read':non-locking SELECT 的执行使我们不会看到一个记录的可能更早的版本; 因而在这个隔离级别下是非 'consistent' reads;这级隔离级别的运作如同 READ COMMITTED。处于这个隔离级的 事务可以读到其他事务还没有提交的数据。如果这个事务使用其他事务未提交的变化作为计算的基础,然后那些未 提交的变化被他们的父事务撤销,则会导致误差。 提交读 ——在一个事务中已经COMMIT的数据可以在其他事务中看到。如果这个事务频繁提交的话,其他的大的查询 事务中可能会得到多个不同的结果。 可重复读 ——这是 InnoDB 默认的事务隔离级。在一个事务中所有读都是连续的。 序列化 —

Mysql数据库主从复制搭建

為{幸葍}努か 提交于 2020-03-18 18:56:28
Mysql数据库主从复制原理: 主库开启bin-log日志,同时生成IO线程。IO线程负责将用户写入数据库的sql语句记录在二进制日志bin-log,该记录过程可并发进行;生成标识号 server id ;创建主从复制账号。   从库不需要开启bin-log日志,开启主从复制后,从库将产生一个IO线程,从库IO线程监控主库bin-log日志,当bin-log 日志发生变化时,从IO线程将会通过3306端口向主IO线程申请验证,进行数据交换,具体验证信息:1 主库IP和端口号、2 主库的复制账号和密码、3 所要复制的bin-log日志的文件名、4 文件中position具体位置。验证通过后主IO线程将对应的内容复制给从IO线程,该过程可以并发进行。此时从库文件master.info 记录了验证信息和完成数据交换的bin-log日志文件及文件中的位置信息。从库IO线程将内容放在从库中继日志relay-log中。SQL线程启动,查看relay-log ,将其中更新的二进制语句编译解析成sql语句,存储在从库的mysql data 目录中,并在relay-log.info文件中记录sql进程解析relay-log的文件名及位置信息,完成主从复制。 主从备份搭建 试验环境:master: 1922.168.200.151 slave : 192.168.200.129 一、 建立时间同步环境

MySQL InnoDB存储引擎的事务隔离级别

江枫思渺然 提交于 2020-03-18 18:45:17
我们知道,在关系数据库标准中有四个事务隔离级别: 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读 串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 查看InnoDB系统级别的事务隔离级别: 以下为引用的内容: mysql> SELECT @@global.tx_isolation; +-----------------------+ | @@global.tx_isolation | +-----------------------+ | REPEATABLE-READ   | +-----------------------+ 1 row in set (0.00 sec) 查看InnoDB会话级别的事务隔离级别: 以下为引用的内容: mysql> SELECT @@tx_isolation; +-----------------+ | @@tx_isolation | +-------------

★ MYSQL隔离级别 通俗理解 + mysql、oracle默认事务隔离级别

时光总嘲笑我的痴心妄想 提交于 2020-03-18 18:38:43
★  脏读    : 读取了前一事务 未提交 的数据 ;   不可重复读 : 读取了前一事务 提交 的数据; ★ 幻读 与 不可重复读       common  :都是读取了另一条已经提交的事务(这点与脏读不同);   differences :     不可重复读 :查询的都是同一个数据项     幻读    :针对的是一批数据整体(比如数据的个数) 不可重复读eg:   < 当隔离级别设置为Repeatable read 时,可以避免不可重复读 >   eg2: 在事务A中,读取到张三的工资为5000,操作没有完成,事务还没提交。     与此同时,事务B把张三的工资改为8000,并提交了事务。     随后,在事务A中,再次读取张三的工资,此时工资变为8000。在一个事务中前后两次读取的结果并不致,导致了不可重复读。(大部分数据库缺省的事物隔离级别都不会出现这种状况) 幻读eg:   eg1: 目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。     此时,事务B插入一条工资也为5000的记录,并且commit了。     这时,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读。     (大部分数据库缺省的事物隔离级别都会出现这种状况,此种事物隔离级别将带来表级锁)   eg2:

mysql读写分离

北慕城南 提交于 2020-03-18 18:34:51
环境介绍: amoeba 服务器:   192.168.3.99 master mysql 服务器: 192.168.3.100 slave1 mysql 服务器: 192.168.3.101 slave2 mysql 服务器: 192.168.3.102 客户端: 192.168.3.150 在 192.168.3.99 ( amoeba )配置 chmod +x jdk-6u14-linux-x64.bin ./jdk-6u14-linux-x64.bin mv jdk1.6.0_14 /usr/local/jdk1.6 vim /etc/profile.d/jdk.sh #!/bin/bash export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin source /etc/profile.d/jdk.sh mkdir /usr/local/amoeba tar xf

mysql误删除数据后如何恢复

随声附和 提交于 2020-03-18 17:55:10
Mysql 误删除是我最头痛的一件事,网络也有很多惨痛的教训,为了减少企业损失,应迅速恢复业务数据,后续在人员操作行为上建立完善的制度及流程,将风险扼杀在摇篮才是上上策。 本次使用的原美团开源Mysql 数据闪回工具 传送门:https://github.com/Meituan-Dianping/MyFlash 一,MyFlash简介 MyFlash的前身是binlong2,后续是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析V4版本的二进制日志,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。 该工具已经在美团点评内部使用 二,MyFlash使用限制 二进制日志格式必须为【row】行级模式 ,且binlog_row_image =full 仅支持5.6与5.7 (如果是低版本的mysql 二种方案 1,升级mysql 2,使用binlog2) [binlog2sql工具的下载地址:] 只能回滚DML(增,删,改) 三,详细说明 3.1 安装部署 git clone https://github.com/Meituan-Dianping/MyFlash.git cd MyFlash/ [root@gitlab MyFlash]# yum install glib2* [root@gitlab MyFlash]# gcc -w

Mysql数据库写入数据速度优化

泄露秘密 提交于 2020-03-18 14:33:08
Mysql数据库写入数据速度优化 1)innodb_flush_log_at_trx_commit 默认值为1;设置为0,可以提高写入速度。 值为0:提升写入速度,但是安全方面较差,mysql服务器宕机可能会造成数据丢失。 值为1:每一次事务提交或者事务外的指令都需要把日志写入硬盘,此过程消耗时间较长; 值为2:是每次操作不写入硬盘,而是写入系统缓存,日志仍然会每秒刷新硬盘; 2)innodb_autoextend_increment默认值为8M,调整为128M ; 此配置项作用主要是当tablespace 空间已经满了后,需要MySQL系统需要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增加自动扩展Size可以减少tablespace自动扩展次数。 3)innodb_log_buffer_size默认值为1M,调整为16M ; 此配置项作用设定innodb 数据库引擎写日志缓存区;将此缓存段增大可以减少数据库写数据文件次数。 4)innodb_log_file_size默认值为 8M,调整为128M ; 此配置项作用设定innodb 数据库引擎UNDO日志的大小;从而减少数据库checkpoint操作。 5)bulk_insert_buffer_size默认值为8M,调整为100M; 作用于使用 MyISAM存储引擎