- 浏览: 796690 次
- 性别:
- 来自: 杭州
最新评论
-
137578346:
...
各版本MySQL并行复制的实现及优缺点 -
db_code_peon:
引用而这个“调整”,也不是简单的指针重赋,而是将这个page ...
MySQL源码学习:简述InnoDB的BP LRU策略 -
xtha21:
预申请ID的个数为:大于批量插入记录数的最近一个2的指数值再- ...
MySQL源码学习:innodb_autoinc_lock_mode 下自增id不连续的原因 -
lc15808798846:
奇哥好试了下,好像这个问题在5.7 已经不存在了,SQL不会h ...
autocommit=0引起的业务hang住 -
wangliushui:
Transfer 怎样保证事物的一致性,一个事物关联多个表的 ...
MySQL-Transfer2.2发布
文章列表
MySQL并行复制已经是老生常谈,笔者从2010年开始就着手处理线上这个问题,刚开始两三年也乐此不疲分享,现在再提这个话题本来是难免“炒冷饭”嫌疑。
最近触发再谈这个话题,是因为有些同学觉得“5.7的并行复制终于彻底解决了复制并发性问题”, 感觉还是有必要分析一下。大家都说没有银弹,但是又期待银弹。。
既然要说5.7的并行复制,干脆顺手把各个版本的并行复制都说明一下,也好有个对比。便是本次分享的初衷。
【背景】
一句话说完,因为这几年太多这样文章了, 就是MySQL一直以来的备库复制都是单线程apply。
背景
MySQL全量逻辑备份恢复最基础的方法,就是mysqldump生成文本,再通过source 命令直接导入。一般用于实例迁移或者版本升级。
这里说明最近碰到的一个失败例子。
描述
这个例子可以简要复现如下,在源库上执行如下操作:
use mydb;
技痒之作 -__-
CREATE AGGREGATE FUNCTION oddsum returns INTEGER SONAME "udf_oddsum.so";
CREATE TABLE `v1` (
`c` int(11) DEFAULT NULL,
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into v1 values(1,0), (3,2), (4,4);
select sum(c ...
背景
有用户报告一个普通的select 语句被hang住了,执行超时。查明之后发现是autocommit使用不当导致。
这里将case简化,说明复现步骤及原因。
复现
session1 建表并插入数据:
create table if not exists t(id int primary key, c int);
set autocommit=0;
insert into t values(1,1);
insert into t values(2,2);
insert into t values(3,3);
commit;
select count(*) fr ...
问题描述
一个用户反映线上一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修改了表名和字段名):
SELECT count(*) FROM a JOIN b ON a.`S` = b.`S` WHERE a.`L` > '2014-03-30 00:55:00' AND a.`L` < '2014-03-30 01:00:00' ;
且 ...
问题
一个用户问题,数据从ECS迁移到RDS,相同的语句,查询性能下降了几十倍。而实际上RDS这个实例在内存上的配置与原来ECS上的实例相当。
本文简单说明这个case的原因及建议。
用户反馈性能变慢的语句为 (修改了真实表名和列名)
select count(1) from HR hr join H h on h.hid = hr.hid
join A e on e.aid = h.eid
join A t on t.aid = e.pid
join A c on c.aid = t.pid
join A p on p.aid = c.pid
le ...
问题
线上碰到的问题:相同的语句,只是最后的limit行数不同。奇怪的是,limit 10 的性能比limit 100的语句还慢约10倍。
隐藏用户表信息,语句及结果如下
SELECT f1 , SUM(`f2`) `CNT` FROM T WHERE f1 IS NOT NULL AND f3 = '2014-05-12' GROUP BY f1 ORDER BY `CNT` DESC LIMIT 10;
执行时间3 min 3.65 sec
SELECT f1 , SUM(`f2`) `CNT` FROM T WHERE f1 IS NOT NULL A ...
浏览了下webscalesql 的代码。目前包含的62个commit分类如下。
目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。
本文先简要说明一下当前分支中一些有趣的代码。
关于代码洁癖
Steaphan Greene (@fb)同学的代码洁癖从多达二十几个关于testcase和编译参数调整的commit里面可见一斑。这注定webscalesql分支会是一个够干净的分支。从照片上如此粗旷的汉子真是看不出来。
浏览了下webscalesql 的代码。目前包含的62个commit分类如下。
目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。
本文先简要说明一下当前分支中一些有趣的代码。
浏览了下webscalesql 的代码。目前包含的62个commit分类如下。
目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。
本文先简要说明一下当前分支中一些有趣的代码。
连续碰到两个同学问类似的问题,必须要记录一下。
问题:
一个作解析binlog应用的同学发现不论用utf8还是gbk来解析binlog都可能会碰到无法解析的语句,因为有些用户会用utf8,有些用gbk。尤其在处理Query
今天要写个工具就想顺便学下go。网上翻了下发现用比较多的是mymysql和go-mysql-driver。
这两个驱动网上比较的文章也有些了,不过都没有提到一个点,个人觉得是很重要的,记录一下。
先看使用go-mysql-driver的例子。
db,_:=sql.Open("mysql",
Transfer 2.3发布,下载地址
此版本除了升级based版本外
*优化了无索引表的同步性能
*优化了slave模式下超大事务内存消耗问题
*Transfer模式相关的功能改动较多
*修复transfer模式下超大事务可能同步失败的
背景
上一篇博文(链接)介绍了count distinct的一个bug。解决完以后发现客户的SQL语句仍然返回错误结果(0), 再查原因,发现了另外一个bug。也就是说,这个SQL语句触发了两个bug -_-
这里只说第二个,将问题简化后复现如下,影响已知的所有版本 。
drop table if exists tb;
set tmp_table_size=1024;
create table tb(id int auto_increment primary key, v varchar(32))engine=myisam charset=gbk; ...
Description
In mysql-connector-java-5.1.27, the charset utf8mb4 is supported. But the steps and result bellow looks buggy.
1、 set character_set_server=gbk in my.cnf
2、 start mysql
3、 execute set global character_set_server=utfmb4;
4、 insert a data with utf8mb4 characters
Result: ...