mysql联合索引的选择性
联合索引就是同时对表中多个列进行索引,联合索引会依次根据联合索引中的列排序存储。下面通过下面的实验来探讨下联合索引的使用选择性:版本:percona 5.6.27create table test(a int,b int,c int,name varchar(32),PRIMARY key(a),key index_a_b_c(a,b,c)) ENGINE=INNODBinser...
mysql索引覆盖扫描优化
覆盖扫描即直接在索引中扫描出结果返回给客户端,不需要根据索引再去表上扫描结果,这种效率非常高。当extra列出现Using index时即为覆盖扫描现生产环境有个语句要优化,select create_day,remarks_format,count(*) from CDM.cdm_account_itemized GROUP BY create_day,remarks_format;执行需要20秒,看...
Lock wait timeout exceeded; try restarting transaction
今天开发提交一个存储过程要发布到正式环境call report.proc_zerobuy(20161222,20161222,0);Lock wait timeout exceeded; try restarting transaction请求锁超时了再次执行这个存储过程,查看事务表:一共有两个事务在运行mysql> SELECT * FROM information_schema.INNODB_TRX\G;***********...
mysql恢复drop表
drop误操作删除表后,恢复的大概流程是1、从备份中将表恢复到备份时间点2、找到drop操作点3、从binlog中找到备份点到drop点中间所有事件,并筛选出该表的事件4、执行找到该表的事件一、实验数据:mysql> select * from sale;+--------+---------+--------+| month | user_id | amount |+-------...
pt-table-checksum校验主从一致性,使用pt-table-sync修复数据不一致
pt-table-checksum和pt-table-sync是percona-toolkit(安装文档请见http://blog.itpub.net/29989552/viewspace-2020786/)工具中的功能,用来检测主从数据一致性和修复主从不一致。下面通过一组实验学习这两个功能的使用1、主库创建表并插入数据CREATE TABLE `NewTable` (`id` int(8) NULL ,...
mysql关联查询优化
mysql中任何关联查询都是nest loop(嵌套循环)操作,nest loop是在驱动表中取出一条数据,然后从被驱动表中逐行比较,把符合规则的放入结果集中,然后再取下一行,依次循环,驱动表每返回一行,被驱动表就要扫描一次。针对nest loop关联机制需要从下面几个方面着手优化:1、减少nest loop循环次数,使用小结果集做驱动表...
mysql安装依赖perl(Data::Dumper)
安装Percona mysql的时候出现依赖包错误[root@localhost upload]# rpm -ivh Percona-Server-server-56-5.6.27-rel76.0.el6.x86_64.rpm警告:Percona-Server-server-56-5.6.27-rel76.0.el6.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY错误:依赖检测失败: ...
mysql checkpoint
checkpoint检查点主要是刷新脏页到磁盘上,使数据库达到数据状态一致性的工作。因为事务的提交只会刷新操作日志到磁盘,脏数据是异步刷新到磁盘,这个异步就是靠checkpoint。一、主要解决以下问题:1、恢复的时候减少前滚操作,减少恢复时间2、回收脏页,循环利用缓存池3、重做日志不可用,刷新脏页...
【MySQL】order by 原理以及优化
偏向于业务的(MySQL)DBA或者业务的开发者来说,order by 排序是一个常见的业务功能,将结果根据指定的字段排序,满足前端展示的需求。然而排序操作也是经常出现慢查询排行榜的座上宾。本文将从原理和实际案例优化,order by 使用限制等几个方面来逐步了解order by 排序。
the master's binary log is corrupted
主从复制报错,下面是从库复制状态:mysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event ...
FEDERATED存储引擎实现oracle dblink功能及弊端
mysql FEDERATED存储引擎可以实现oracle dblink类似的远程访问功能,FEDERATED存储引擎需要针对每个需要远程访问的表进行逐一创建,而不能像oracle dblink有全局功能。mysql FEDERATED存储引擎默认是不开启的mysql> show engines;+--------------------+---------+------------------------------------------...
主库reset master清理binlog日志到主从复制错误
今天看见主库binlog日志非常大,于是使用reset master命令清空日志mysql> reset master;Query OK, 0 rows affected (1 min 59.87 sec)结果从库就报错了mysql> show slave status\G;*************************** 1. row ***************************  ...
mysql清除binlog日志
定期清理binlog日志可以避免磁盘满导致数据库异常关闭1、按文件:删除mysql-bin.000354之前的日志,不包含mysql-bin.000354MYSQL>purge binary logs to 'mysql-bin.000354';Query OK, 0 rows affected (0.16 sec)2、按时间:删除2011-11-10 00:00:00 之前的日志MYSQL>purge binary logs before '2011-11-10...
mysql实现开窗函数
学习过oracle的应该知道,oracle中的分析函数功能十分强大,包括mssql、postgresql等数据库都支持开窗函数。然而mysql至今都没有提供这样的功能,今天就来探讨下用mysql实现一些开窗功能需求。实验数据:表sale| month | user_id | amount |+--------+---------+--------+| 201601 | 1 | &n...
MySQL 5.6.26 通过frm & ibd 恢复数据过程
在A服务器上创建数据库yoonroot(yoon)> show create table yoon\G*************************** 1. row *************************** Table: yoonCreate Table: CREATE TABLE `yoon` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CH...
mysql临时表空间不够导致主从复制失败
今天早上上班,有用户反应今天的数据没有更新,于是看下slave进程mysql> show slave status\G;........ Slave_IO_Running: Yes Slave_SQL_Running: No  ...
mysql主从搭建切换
环境:172.30.249.156 percona5.6.27 主机名:tr-mysql 跑着生产环境的应用的虚拟机192.168.129.153 percona5.6.27 主机名:trcloud-gtt-db 新申请的物理机工作内容:给生产环境数据库搭建主从架构,并将主库放到新申请的物理机上,连续停机不能超过10分钟...
在线安全清空慢查询日志slowlog
mysql> show variables like '%slow_query%';+------------------------------------+-------------------------------+| Variable_name | Value |...
mysql Warning
今天重启mysql错误日志显示有如下警告:2016-06-24 09:20:07 0 [Warning] option 'general_log': boolean value '/data/DB/mysql/select.log' wasn't recognized. Set to OFF.2016-06-24 09:20:07 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp serve...
mysql查看缓冲池命中率
缓冲池是一块内存区域,在对数据库进行读取操作时,首先将数据从磁盘中读取到缓冲池中,那缓冲池命中率则是客户端请求的数据在直接在缓冲池获取的比例。想象下如果缓冲池命中率很低,大部分数据都要从磁盘读取,可想而知一个数据库的性能。作为一个mysql OLTP系统,缓冲命中率最好在百分99以上。...