案例分析:mysql子查询,DEPENDENT SUBQUERY特别小心
案例分析:开发提了个订正update数据的sql,一开始没注意看,就直接跑了,结果跑了半天,没动静,以为是在等锁,看线程状态是running的,那说明是没堵的,那就奇怪,为什么会跑半天,因为select的结果集很快的,说明索引是没问题,于是中断了update,准备分析下.先看看update的语句:update product_modelset content = replace(conte...
binlog很有用的2个参数binlog_rows_query_log_events和binlog_row_image
mysql 5.6.2 引入的两个参数binlog_rows_query_log_events和binlog_row_image对于使用row格式的binlog,个人觉得很有用;binlog_rows_query_log_events =1 在row模式下..开启该参数,将把sql语句打印到binlog日志里面.默认是0(off); 虽然将语句放入了binlog,但不会执行这个sql,就相当于...
crash-safe replication的解析及主从注意事项
先前碰到一个故障,于是引入了crash-safe replication,下面仔细描述;故障描述: 从库(slave端)宕机,重启后,mysql同步发现有数据主键冲突;故障分析: 从库宕机后,从库的mysql服务遭到非正常退出,部分数据可能未刷新到磁盘;但这个案例是已经有数据刷新到磁盘了.重启后,从库又重新从主库拉...
mysql特性:semi consistent read
先看看官方的说法:semi consistent readA type of read operation used for UPDATE statements, that is a combination of read committed and consistent read. When an UPDATE statement examines a row that is already locked, InnoDB returns the latest committed version to MySQL so that MySQL can determi...
mysql缓存(innodb_buffer_pool_size)在线调整细说
5.7以后innodb内存(innodb_buffer_pool_size)可以在线调整.这对于dba来说.挺不错的,但调整需要注意:不是随意调小或者调大的,是遵循一定规则的.在此,5.7引入了innodb_buffer_pool_chunk_size参数,这个参数就是来控制内存大小规则的.innodb_buffer_pool_chunk_size默认值为128m(134217728).这个值是以缓存池来计算的.所...
关于mysql的redo日志参数innodb_log_write_ahead_size中read-on-write的理解
先来说说innodb_log_write_ahead_size, 这个参数是在5.7.4引入的.#innodb_log_write_ahead_size 默认为8192.#引入write-ahead,将当前写入redo文件的偏移量整除innodb_log_write_ahead_size该值,不能整除时则补0,多写一部分数据,这样一来,写入的数据是与磁盘的block size保持一致了.这样就可以直接写入磁盘.就省去了先读...
关于innodb_rollback_on_timeout测试
innodb_rollback_on_timeout innodb_lock_wait_timeout最开始看到innodb_rollback_on_timeout 时,没有好好理解transaction timeout的意思.以为只要是连接超时就会触发,今天研究了一下.只能说巨坑;以下测试.隔离级别皆为RR模式.测试过程. 实验一: innodb_rollback_on_timeout =oninnodb_lo...
5.7.8新增的一个很有的参数:max_execution_time
介绍5.7.8新增的一个很有的参数:max_execution_time这个参数是控制select的时间,能有效控制在主库的慢查询情况.如下例子:mysql> show variables like 'max_execution_time'; +--------------------+-------+| Variable_name | Value |+----...
关于mysql彻底删除用户的问题
之前碰到 一个奇怪问题,删除了mysql.user里面的某个用户后,flush privileges后,在建同样的用户后,发现权限不对...后来才发现.是mysql.db在作怪;大致讲下,在删除某个用户对某个库的的insert权限后,删除该用户,flush privileges后,在建同样名字和host的用户,给予相同库或其他库的update权限,结果发现,之前删除的insert权限又...
mysqldump的一个大失误.关于--compact参数使用不当的教训...记录...备用...
mysqldump 的一个参数 --compact官网给出的说法是这样:--compactProduce more compact output. This option enables the --skip-add-drop-table, --skip-addlocks, --skip-comments, --skip-disable-keys, and --skip-set-charset options.大概意思就是让导出的脚本里面取消一些注释和不必要的sql.下面这这几行就是加...
mysql关于 通过关联表update数据的误区测试
关于update关联表的写法存在很多误区,以前我自己也经常犯错....一般的写法有如下几种:update test1 set name =(select name from test2 where test1.id=test2.id);update test1 a,test2 b set a.name=b.name where a.id=b.id;update test2 set test2.name=(select name from test1 where test1.id=test2.id) where exis...
mysql 5.1升5.6 升级后,出现问题,随手记录,以备用
错误:mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'born_CRM'': Cannot load from mysql.proc. The table is probably corrupted (1728)Warning: Using a password on the command line interface can be insecure.mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'mysql'': Cannot lo...
mysql 5.6 后热数据的加载
故障现象:在数据库重启后,碰巧遇到业务高峰期,连接数满,导致用户登录一直等待,此时数据库处于无响应状态.故障分析:当数据库重启后,在数据库buffer中的热数据需要innodb本身去预热.如果buffer太大,依靠innodb自己去预热,将会有很长一个周期才能实现.此时热数据就需要到磁盘去寻找,就给磁盘的I/O带来很大的压力.遇到瓶颈,...
mysql 半同步复制
(本文测试案例,没有开启gtid,涉及gtid的半同步,将另文说明)半同步是相当于异步同步而言.异步同步就是我们经常说的master-slave模式.半同步也是基于bin-log的复制,主库在提交一个事物时,在写入binlog后,等待salve端接收到bilog后,返回一个接收成功的信号给主库,主库在接收到次信号后,才会正式提交该事物...简单来讲就是在主...
mysql存储过程翻页
mysql5.6.20版本开发提了一个需要分页的存储过程需求,刚来时理解是,只要带入一个变量,根据变量计算下值,就直接分页实现了...可结果,创建存储过程的时候报错了...查了很多资料,后来才得知,limit后面不能带变量.于是就想到直接吧带入参数进行计算.在吧带入参数进行分页...把大概过程贴一下...自己也记录一下:mysql>delimi...
mysql中delete误删除,利用binlog回滚
mysql> select * from tet3;+----+-------------+| id | dd |+----+-------------+| 1 | XX || 2 | YY || 3 | aaa &n...
mysql中update误操作,利用binlog日志,模拟oracle闪回功能.
前提:binlog模式为row,隔离模式为read-committed对于update误操作,可以模拟oralce 的闪回功能,利用binlog日志,具体操作如下:mysql> select * from test1;+------+---------+--------+| dept | name | salary |+------+---------+--------+| it | gaopeng | 100 || ...
mysql删除ibdata文件的恢复操作
在数据文件下的innodb ibdata包括表空间:ibdata1,ibdata2,回滚日志ib_logfile0,ib_logfile1,ib_logfile2.[root@localhost data]# ls5k72 db-bin.000015 dbjijin-bin.000001 ibdata1 ib_logfile1 &nb...
EXPLAIN详解
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释:table:显示...
mysql用户名(root)密码遗忘修复(有黑科技)
mysql用户名(root)密码遗忘修复(有黑科技) 讲到用户了,就先说说mysql的用户权限吧.5.7开始,有了很多改变: 1.用户长度变了.5.7.8以后的用户长度为32个字符,5.7.8以前的用户长度为16个字符,5.6我记得好像是8? 忘了.咳咳 &nbs...