mysql
文章平均质量分 82
repls
这个作者很懒,什么都没留下…
展开
-
flush tables with read lock的一个潜在问题
看了mysqlperformance的一篇关于flush tables with read lock的文章,里面提到了它可能引发一些问题。好了,现学现卖,分享给大家。现在很多的mysql备份工具在实现原理上都利用到了flush tables with read lock。这是为备份myisam表而设计的。像xtrabackup备份innodb表时并不会锁表,因为它也会备份在备份过程中新原创 2012-04-06 23:41:09 · 6562 阅读 · 0 评论 -
MySQL5.5对多核CPU的支持
今天测试一台机器能大概支撑多少MySQL实例的时候,意外的发现原来MySQL 5.5对多核的支持也相当不错,以前不是到处说MySQL一个很大的缺陷就是不能很好的利用好CPU么?看来MySQL 5.5还是不错的,测试工具是sysbench,test-mode=oltp,每个实例的buffer=12G,sysbench生成的数据36G左右,buffer占数据的1/3。当然测试的机器也不赖:DELL R原创 2012-08-16 22:35:13 · 6592 阅读 · 3 评论 -
mysql报错:two many connections/two many open files的解决方法
最近在论坛里面看到有几个朋友都发帖求助,原因是mysql报错:[ERROR] Error in accept: Two many open files。而且这位朋友还说他并没有同时打开这么多文件,那么这是什么原因呢?首先,我们需要了解的是,在linux里面打开文件是以文件描述符(FD,file descripter)的形式打开的,每打开一次文件,那么os就分配给你一个文件描述符,对于同一个原创 2012-04-06 23:17:24 · 2308 阅读 · 0 评论 -
MySQL slave状态之Seconds_Behind_Master
在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master。那么你是否明白它的真正含义以及它是怎么计算的呢? 在之前我一直误以为Seconds_Behind_Master是表示slave比master落后多少,如果这个值为0的表示主从已经处于一致了(在原创 2013-01-11 21:17:35 · 12974 阅读 · 1 评论 -
概谈“应用反应某些操作或查询慢”的处理方法(从MySQL DBA角度)
作为一个运维人员或多或少都会从应用开发那边得到类似“为什么用户反应很多操作慢?或者为什么我这里统计的日志里面出现了较多的查询较慢?”。那么遇到此问题我们该怎么来解决呢?我今天就利用自己的工作经验从MySQL DBA的角度来简单分析一下这个问题。 首先我们得区分这种查询慢或者操作慢发生的频率怎么样。按理来说这种状况不会经常发生,一个产品上线前都有专门的QA团队对其进行功能测试/压力原创 2013-01-14 15:44:14 · 6405 阅读 · 4 评论 -
TokuDB6.5与InnoDB(1.1.18)性能对比测试
大家对MySQL存储引擎最熟悉的恐怕就是InnoDB了,InnoDB的性能还算不错,尤其适用互联网应用。但是InnoDB也不能称作完美,尤其是单实例MySQL的性能那还真不敢恭维,现在大多数互联网公司都是通过优秀的架构来弥补这点吧。今天说到的这个MySQL存储引擎单实例性能在特定情况下确实比InnoDB强很多,普通情况下也不差-----TokuDB------完美兼容MySQL。TokuDB是一个原创 2012-11-27 23:43:57 · 2896 阅读 · 0 评论 -
insert into...select需要注意的问题
平常习惯生产数据的时候,直接用insert into ...select这种语法,结果今天需要的数据量稍微一大就出错了,错误信息如下:mysql> insert into t1 select null, b, c from t1;ERROR 126 (HY000): Incorrect key file for table '/tmp/#sql_689f_0.MYI'; try to re原创 2012-04-09 17:44:20 · 11482 阅读 · 1 评论 -
使用tmpfs文件系统做MySQL tmpdir潜在的问题
在前面我写过一篇关于tmpfs和ramfs对比分析的文章。当初也是因为看到有人用/dev/shm(tmpfs)做MySQL tmpdir,于是就去学习了下tmpfs。今天再次谈这个问题是因为使用tmpfs做MySQL tmpdir(以后简称tmpdir)确实还是存在一些问题的,而且在某些特定的Linux 内核版本还会触发bug。今天写篇文章记录一下。 当时的机器环境信息:原创 2013-03-10 21:45:18 · 3259 阅读 · 0 评论 -
一点关于MySQL参数delay_key_write、myisam_recover_options的使用经验
最近在做数据库实例迁移的时候遇到了几个比较诡异的问题:MyISAM实例正常shutdown后rsync数据文件到另外一台机器上起实例后,访问表时提示表自动修复失败需要repair table。提示信息:Table './test/record_03' is marked as crashed and last (automatic?) repair failed表损坏后,利用repair原创 2013-05-03 23:10:46 · 2506 阅读 · 2 评论 -
Sysbench介绍与使用
最近用sysbench进行了较多的性能测试,也总结一下它的特点和用法和需要注意的事项。sysbench是一个多线程性能测试工具,可以进行CPU/内存/IO/数据库等性能测试。不过我绝大多数的时候都是用它来对数据库(MySQL)进行oltp测试。它能测哪些东西,怎么测让我从它的命令帮助来回答。~/zbs$ sysbench --helpMissing required command原创 2012-11-28 22:39:22 · 4490 阅读 · 0 评论 -
MySQL limit与order by遇到的有趣问题
相信大家都知道MySQL的limit语法 select/delete/update .... limit start, len; 目的是限制查询或者更新几条数据。当然我们需要知道如果是更新语句带了limit,那么为了复制安全我们应该有 order by 主键/唯一键的语法,否则更新的行就不确定了。入正题,我这个场景是怎样的呢? 业务反映有一条SQL突然查询特别慢:select m原创 2013-04-22 20:26:46 · 2570 阅读 · 0 评论 -
MySQL Replication常见错误整理[持续更新...]
这篇文章旨在记录MySQL Replication的常见错误,包括自己工作中遇到的与网友在工作中遇到的,方面自己及别人以后进行查找。每个案例都是通过Last_IO_Errno/Last_IO_Error或者Last_SQL_Errno/Last_SQL_Error给出错误关键信息,所以以后查找时只需直接ctrl+F查找关键字就行。 Last_SQL_Errno: 1677原创 2013-03-16 16:38:03 · 4633 阅读 · 0 评论 -
MySQL filesort优化案例一则
今天遇到一个filesort优化的案例,感觉不错,分享出来。 MySQL中filesort是什么意思?官方手册定义: MySQL must do an extra pass to find out how to retrieve the rows in sorted order. The sort is done by going through all原创 2013-09-09 21:33:55 · 3790 阅读 · 0 评论 -
再议Seconds_Behind_Master
两年前就写过一篇文章解释Seconds_Behind_Master代表的含义以及它为什么不准确,今天同事高老师又提了一个有趣的问题:Seconds_Behind_Master到底是怎么计算的呢?高老师还特地去翻了一下源码来解释,我发现我之前的理解还是有出入的,于是自己也动手去翻了一下源码,下面就来更全面的解释一下它是怎么计算的,为什么不能完全可信。 我平时读MySQL源码比较原创 2015-06-19 11:35:44 · 1702 阅读 · 0 评论 -
mysql空用户(user列为空)带来的影响
今天搭建一个测试环境时,遇到了一个很隐蔽的问题。有必要分享一下| user | password | host |+------+-------------------------------------------+--------------------+| root | *81F5E原创 2012-04-06 23:34:05 · 5894 阅读 · 3 评论 -
一个InnoDB 加锁的案例
最近一直在优化各个产品的SQL语句,同时还帮一个同事解决deadlock问题,收获就是对InnoDB加锁的理解更加深入了。先来看看今天的这个案例:mysql> select version();+----------------------+| version() |+----------------------+| 5.5.13.4-log原创 2012-11-05 23:02:43 · 2277 阅读 · 5 评论 -
淘宝物流MySQL slave复制数据丢失问题的个人整理
对于这几天微博上较火的关于淘宝物流MySQL slave复制数据丢失问题,我自己也比较关注,然后根据沃趣科技的一篇分析文章算是大概明白了其中的明细,现在再来根据我自己的理解理一下思路,顺便加深自己的理解。 简单的说这个问题的来由是这样的:主库的一些DML语句在从库上没执行。那么遇到这样问题,我们一般都是从这几个方面找问题,show slave status查看复制状态原创 2012-11-01 00:57:38 · 5339 阅读 · 2 评论 -
How Logs Work On MySQL With InnoDB Tables
这篇帖子个人感觉写得非常棒,不转不行In this article I will describe how logs work with MySQL and InnoDB. Very little of this material is in the manual. I gleaned it from the source code while researching for our la转载 2012-04-06 23:26:37 · 1083 阅读 · 0 评论 -
mysql 5.1中DDL语句对Transaction的影响
这个问题是从mysqlperformance上发现的,挺有意思,分享一下。DDL语句对transaction的影响。下面贴出自己的实验过程:mysql-5.5session1:mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> select * from test;+----+-----原创 2012-04-06 23:45:44 · 2573 阅读 · 0 评论 -
对innodb MVCC实现的一点点思考
不得不说MVCC思想对关系数据库的影响很大,读不阻塞写,写也不会阻塞读,大大提高了并发性。当前主流的数据库基本上都实现了MVCC,比如Oracle、MySQL、PostgreSQL等等。现在来谈谈MySQL(innodb)是怎么实现MVCC的,它的优缺点是什么。innodb对MVCC的实现是通过在每个事物开启时创建一个当前系统活跃事务的副本(read_view),然后每次读取行的时候,通过这个行上原创 2012-04-06 23:59:38 · 1896 阅读 · 0 评论 -
innodb_fast_shutdown的内幕
参数innodb_fast_shutdown提醒了我一直没研究过的innodb特性之一——insert buffer。首先简述这个参数,然后谈谈insert buffer的实现。Innodb_fast_shutdown告诉innodb在它关闭的时候该做什么工作。有三个值可以选择:1. 0表示在innodb关闭的时候,需要purge all, merge insert buffer原创 2012-04-06 23:11:51 · 6406 阅读 · 0 评论 -
mysql中操作系统级别错误代码与其含义
经常见到网友在发一些关于mysql操作出错的解决方法,现在整理一下。mysqlperformanceblog上明确说了,mysql里面出现的errno(操作系统级别的错误)没有经过任何改变,仅仅是封了一个错误代码,然后呈现给用户。下面是手册上对这些操作系统级别错误和其对应错误代码解释:Linux平台:NumberMacroDescript原创 2012-04-10 12:24:17 · 2811 阅读 · 0 评论 -
浅析index condition pushdown
另一篇文章讲叙了 MRR和BKA 什么是indexcondition pushdown(ICP)?在数据库中pushdown表示某些操作“下推”,也就是某些操作提前执行,在生成执行计划时某些操作下推可以大大提升效率(为什么叫下推,因为优化器在生成的计划叫做执行计划树,操作从叶子节点开始往根上执行,下推就意味着提前执行)。举个最简单的例子,某些投影操作下推可以大大减小在执行过程中的数据量,而原创 2012-04-15 18:46:48 · 6821 阅读 · 2 评论 -
浅析 innodb next-key lock
record lock:记录锁,也就是仅仅锁着单独的一行gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值,至于为什么这么定义?innodb官方定义的)next-key lock:record lock+gap lock,所以next-key lock也就半开半闭区间,且是下界开,上界闭。(为什么这么定义?innodb官方定义的)下面来举个手册上的原创 2012-04-07 10:53:56 · 5744 阅读 · 8 评论 -
预分配mysql binlog文件存储空间有可能较大幅度提升性能
最近已经看到两篇文章说通过预分配mysql binlog文件存储空间(类似于innodb redo log一样)可能比较大幅度的提升性能。而提升性能最本质的原因在于:在linux中覆盖写(overwriting)比附加写(appending)速度要快很多。记录一下,说不定哪天在某个版本里面就被改进了。详情见:1. WL http://dev.mysql.com/wor原创 2012-08-29 20:29:38 · 1605 阅读 · 0 评论 -
MySQL对性能较为强劲的服务器利用率测试
前面一篇文章记录的MySQL 5.5对多核cpu的利用率,点击这里。其实当初测试的主要目的是今天所说的:一台性能较强劲的服务器,跑多个实例对整机的利用率大概会怎么样呢? 测试的机器是DELL R720XD,24核cpu,96G内存,挂了24个SAS盘。测试之前对这24个盘做了2个raid10盘阵,然后对每个raid10盘阵利用GPT做6个逻辑分区,然后做了ext3文件系统。测试工原创 2012-08-22 22:26:10 · 2140 阅读 · 1 评论 -
浅析multi range read(MRR) & batch key access(BKA) & block nested loop(BNL)
另一篇文章介绍了index condition pushdown(ICP) 这篇讲叙的是MRR和与之相关的BKA什么是MRR?MRR:multi range read。不好解释,先来看个例子: select * from tb where key_column = x 在没有MRR的情况下,它是这样得到结果的:1. select key_column, pk_column原创 2012-04-15 18:55:39 · 9557 阅读 · 5 评论 -
浅析Innodb crash recovery
今天想谈谈Innodb crash recovery是因为工作中遇到的两个问题涉及到了它。实际上在何登成的博客也从源码角度分析这个过程,但是个人感觉一般人难得理解,事实上一般的DBA也没有必要做那么深入的研究。言归正传,当初工作中遇到的问题是什么呢?第一,一个同事执行一个大表操作,结果就很长时间没执行完,然后kill掉这个实例(这种做法不好),然后再重启实例时后mysql连上去,发现无法对刚才那个原创 2012-09-10 22:06:57 · 2753 阅读 · 0 评论 -
一点关于Linux mv/rm命令的“有趣事“
今天要说的mv/rm这两个命令的“趣事”是再使用mysql时遇到的。我先将问题贴出来,你也先思考一下,看看你的答案是什么。 环境:mysql5.5,innodb_file_per_table=1 问题:一个mysql实例在跑,数据库里面新创建一张表t1(因为是独立表空间所以有一个数据文件叫做t1.ibd),然后我rm或者mv t1.ibd文件,然后继续对这个表进原创 2012-09-24 20:36:41 · 2210 阅读 · 1 评论 -
对MySQL load data infile的一点想法
今天无意和同事讨论MySQL load data infile的问题,这个问题是由开发那边引起的:他们竟然对一个4千万行的数据直接load data infile插入测试库,结果可想而知,出问题了。跑了一整晚都没跑完,基本上是卡死了【注释1】。原因可能是原表索引太多,导致速度巨慢。于是做了一个实验验证load data infile是否为一个单独的事务。 步骤是这样的:1,开启b原创 2012-09-05 20:10:46 · 6641 阅读 · 2 评论 -
浅析innodb_support_xa与innodb_flush_log_at_trx_commit
很久以前对innodb_support_xa存在一点误解,当初一直认为innodb_support_xa只控制外部xa事务,内部的xa事务是mysql内部进行控制,无法人为干预(这里说的内部xa事务主要是指binlog与innodb的redo log保持一致性所采用的内部xa事务)。直到前阵子在微博上看到有人讨论mysql数据安全时才仔细去手册上查看了关于innodb_support_xa的解释,原创 2013-06-20 21:06:47 · 6269 阅读 · 1 评论