用Oracle的眼光来学习MySQL 5.7的sys(下)(r11笔记第25天)
昨天写了篇分析sys的文章,用Oracle的眼光来学习MySQL 5.7的sys(上)(r11笔记第24天) 收到了一些朋友的反馈,还不错,今天继续努力,再整理一篇。sys还是很有借鉴意义 今天还和同事偶然聊起sys schema的事情,我觉得有几个地方要值得借鉴。1)原本需要结合information_schema,perfor...
用Oracle的眼光来学习MySQL 5.7的sys(上)(r11笔记第24天)
sys的初衷 MySQL 5.7的sys自从推出以来,整体的反响似乎没有预期的那么高,而我看到这个sys库的时候,第一感觉是越发和Oracle像了,不是里面的内容像,而是很多设计的方式越来相似。所以按照这种方式,我感觉离AWR这样的工具推出也不远了。 对于实时全面的抓取性能信息...
MySQL中insert语句没有响应的问题分析(r11笔记第21天)
今天开发的一个同学问我一个MySQL的问题,说在测试数据库中执行一条Insert语句之后很久没有响应。我一看语句是一个很常规的insert into xxx values形式的语句。看起来有些不太合乎常理啊,我对这类问题立马来了兴趣,准备好好看看到底是什么原因。 向开发同学了解了环境之后,我登录到服务端,首先查看是...
MySQL级联复制中的数据同步(第二篇)
今天解决了两个蛮有意思的MySQL问题,简单分享出来。首先是昨天说的级联复制的情况,因为架构做了调整,我们要删除其中的一个中继节点(新加坡节点),而直接使用北京节点去连接北美的节点。更多的信息可以参考。MySQL级联复制中的数据同步(r11笔记第20天)大体的架构方式如下:如此一来,为了避...
MySQL级联复制中数据同步
最近开发的同事反馈了一个问题,说有一台北京节点的MySQL数据库数据延迟太大,想让我们帮忙看看怎么解决。 这个问题一下子让我想起了之前“水深火热”的日子,因为这是一套MySQL级联复制的环境。这么做的目的也是为了能够方便数据查询和统计任务,看起来虽好,但是老...
MySQL修复表的简单分析
今天有个同事问我一个数据库的问题,如果开始他就把环境细节全都告诉我,可能我就知难而退了。等我大体明白了问题之后,发现好像背景比我想的要复杂多了。这是一个远程云主机环境,windows系统,运行着MySQL,在查询表时出现了问题,而且开发同事经过了repair也没有修复,说会卡住没有响应。当然费了一点功夫,好容易...
MySQL主从不一致的修复过程
昨天发现一个5.7的MySQL从库在应用日志的时候报出了错误。从库启用过了并行复制。Last Error的内容为:Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 0 failed executing transaction '8fc8d9ac-a62b-11e6-a3ee-a4badb1b4a00:7649' at ma...
MySQL和Oracle中的delete,truncate对比
在MySQL和Oracle中的delete,truncate还是存在着一些差别,明白了这些差别可能对于处理问题,理解问题会有一些帮助。我们来简单通过一些测试来说明。我们创建两个表test_del,test_tru来对比delete,truncate的操作。我们有一个临时表t_fund_info大概有几百万的数据量。创建test_del> create table test_del sel...
MySQL 5.7安装部署总结
之前搭建MySQL环境都是使用公司内部使用的脚本,其实说实话屏蔽了很多细节,对MySQL的安装还是了解比较肤浅,今天有个MySQL 5.7的数据迁移的任务,也是为了熟悉安装过程就走了一遍安装的流程,整体和5.6差别不大,这里演示安装的都是Percona发布的二进制版本,和MySQL官方的是完全兼容,当然也揉入了Percona一些自己的东西...
MySQL修改数据类型的问题总结
昨天快下班的时候,突然开发的同事找我说有个紧急需求,负责这个业务的DBA同事回家了,想让我帮忙看看,运行个SQL语句,几秒钟就好。我一听,就本着人道主义的精神留下来处理,但是发现似乎留给我的是一个大坑。了解了问题之后,让我有些后背发凉,这个表根据开发同事反馈有20亿的数据,这得多大的一个表啊,当前的问题是...
MySQL和Oracle的添加字段的处理差别
昨天在微信群中有个朋友也是无意中问了一下,说数据库中的表字段想保持一种相对规范的顺序,怎么办?要知道Oracle中这个操作就比较纠结了,因为是按照追加的方式来处理的。没法在已有的字段1,字段2中间添加一个字段3。但是MySQL却可以,这个方面MySQL看起来要灵活的多,这个是什么原因呢,他们在设计上有什么差别呢。MySQ...
mysqlimport导入报错的排查
今天有个同事问我一个mysqlimport导入的问题,看起来还是蛮奇怪的。同事在客户端导入一个文件。文件大小是2.8G,然后报错mysqlimport: Error: 2013, Lost connection to MySQL server during query对于这个问题我的第一感觉是一台云服务器,是不是没有配置swap造成的原因,因为在之前的一次迁移中,被这类问题折磨坏了,遭...
MySQL反连接的优化总结
今天同事有一个环境发现一条语句执行时间很长,感到非常奇怪。刚好有些时间,就抽空琢磨了下这个问题。总体来看这个环境还是相对比较繁忙的,线程大概是200多个。# mysqladmin pro|less|wc -l235带着好奇查看慢日志,马上定位到这个语句,已做了脱敏处理。# Time: 161013 9:51:45# User@Host: root[root] @ loc...
MySQL Profile在5.7的简单测试
MySQL Profile对于分析执行计划的开销来说,还是有一定的帮助,至少在分析一些性能问题的时候有很多的参考依据。我在5.6, 5.7版本中进行了测试,没发现差别,还是以5.7为例进行演示吧。mysql> select version();+-----------+| version() |+-----------+| 5.7.10 |+-----------+1 row in set (0....
MySQL replace into的使用细则
在Oracle中有merge into的语法,可以达到一个语句完成同时修改,添加数据的功能,MySQL里面没有merge into的语法,却有replace into。我们来看看replace into的使用细则。为了方便演示,我首先创建一个表 userscreate table users(user_id int(11) unsigned not null,user_name varchar(64) default null,primary key...
MySQL中的事务和锁简单测试
>create table test(id int,name varchar(30));Query OK, 0 rows affected (0.15 sec)>insert into test values(1,'aa');Query OK, 1 row affected (0.02 sec)会话1:[test]>start transaction;Query OK, 0 rows affected (0.00 sec)[test]>select *from test;+------+------+| id | name |+---...
MySQL和Oracle中的半连接测试总结(一)
SQL中的半连接在MySQL和Oracle还是存在一些差距,从测试的情况来看,Oracle的处理要更加全面。首先我们来看看在MySQL中怎么测试,对于MySQL方面的测试也参考了不少海翔兄的博客文章,自己也完整的按照他的测试思路练习了一遍。首先创建下面的表:create table users(userid int(11) unsigned not null,user_name varcha...
MySQL级联复制的同步问题(一)
今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。大体的流程设计如下:三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可见延迟是难免的,但是延迟不能太大。最终的数据还是要通过节点3来做统计分析查询。这套环境的数据量不大,但是数据变更貌似是...
MySQL中的NULL和空串比较
今天接到一个MySQL工单,是执行几条SQL语句。我一看就感觉这语句比较有意思。语句大体是这样的:update app_code_value set channel_id=null where task_id=378 and channel_id='';update app_code_value set channel_id=null where task_id=379 and channel_id='';因为对Oracle熟悉一些,所以总是喜欢用Oracle的思维来...
一个MySQL优化案例的初步思路
今天想起这件同事处理的一个性能优化案例,当时虽然解决了,但是还是留下了几个未解的问题,和大家一起讨论一下。首先,这个问题是根据反馈sql响应很慢,已经开始影响前端应用的登录了。稍后DBA介入,发现是由于CPU使用率过高导致,为了能够延缓问题和进一步分析,因为数据库中的数据量不大,直接就迁移到了另外一台配置不...