mysql
andyguo
郭振华 360资深性能测试专家 ,有7年主流互联网公司的从业经验,对服务端性能测试、移动端性能测试都有较深研究,目前主要负责团队性能测试方案设计、测试平台研发和创新技术引进等工作。目前副业做婚恋相关的项目,有单身的或者感兴趣的可以一起搞起来
展开
-
Innodb锁机制
InnoDB锁问题InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。背景知识1.事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称转载 2013-08-29 11:38:17 · 2180 阅读 · 1 评论 -
Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)
mysql LVM快照备份特点:1、在大多数情况下,这种方式几乎算得上是热备。它无需关闭服务,只需要设置只读或者类似这样的限制。2、支持所有基于本地磁盘的存储引擎,比如MYISAM、InnoDB和BDB,还支持Solid、PrimeXT和Faction。3、备份速度最快,因为你只需要拷贝相关的二进制数据文件即可。4、由于只是简单的拷贝文件,因此对服务器开销非常低。转载 2013-04-07 17:47:56 · 962 阅读 · 0 评论 -
mysql 性能调优
(一)连接连接通常来自Web服务器,下面列出了一些与连接有关的参数,以及该如何设置它们。1、max_connections这是Web服务器允许的最大连接数,记住每个连接都要使用会话内存(关于会话内存,文章后面有涉及)。2、max_packet_allowed最大数据包大小,通常等于你需要在一个大块中返回的最大数据集的大小,如果你在使用远程mysqldump,原创 2013-03-23 15:48:55 · 1131 阅读 · 0 评论 -
MySQL 5.5 服务器变量详解
innodb_adaptive_flushing={ON|OFF}设定是否允许MySQL服务器根据工作负载动态调整刷写InnoDB buffer pool中的脏页的速率。动态调整刷写速率的目的在于避免出现IO活动尖峰。默认值为ON。作用范围为全局级别,可用于选项文件,属动态变量。 innodb_adaptive_hash_index={ON|OFF}设定是否启用InnoDB的自转载 2013-03-28 15:03:33 · 1081 阅读 · 0 评论 -
mysql性能测试及不同版本的比较
I. 引言Oracle 公司发布了MySQL5.5版本,这也是该公司获得MySQL后,对MySQL的第一次升级。Oracle表示,按照内部的标准,在Linux 上,MySQL 5.5的读写速度比5.1版本提升了360%。在Windows Server机器上,这方面性能的提升超过了1500%。MySQL 5.5版本的吞吐量更高。如果真如Oracle所言,MySQL5.5相对于MySQL5.1转载 2013-03-07 16:47:20 · 13024 阅读 · 2 评论 -
Mysql监控工具–mytop
Andyguo 2012-11-27mytop 是一个类似 Linux下的 top 命令风格的 MySQL 监控工具,可以监控当前的连接用户和正在执行的命令。一Mytop安装1. 安装TermReadKey 下载地址:http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/TermReadKey-2.30.tar.gz原创 2012-11-27 09:51:41 · 5735 阅读 · 0 评论 -
nginx 实现mysql的负载均衡
nginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司的的负载均衡都是nginx所以决定研究一下nginx的这个功能实现,下面简单介绍一下实现方法:1.下载module模块下载地址 : https://nodeload.github.com/yaoweibin/ngi原创 2012-09-07 18:28:04 · 12870 阅读 · 6 评论 -
利用keepalived构建双主MySQL
使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。下面,我把即将上线的一个生产环境中的架构与大家分享一下,看一下这个架构中,MySQL-HA是如何实现的,环境拓扑如下原创 2012-09-10 13:07:08 · 7956 阅读 · 1 评论 -
MYSQL双主同步故障
show slave status \G; 果然 Slave_IO_Running: YesSlave_SQL_Running: No而且出现了1062错误,还提示 Last_SQL_Error: Error 'Duplicate entry '1001-164761-0' for key 'PRIMARY'' on query. Default database: 'bug'.原创 2012-10-25 14:43:08 · 8808 阅读 · 0 评论 -
Mysql缓存研究
缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射原创 2012-09-20 18:44:21 · 7042 阅读 · 2 评论 -
mysql清空缓存的命令
作为测试的我,为了排除缓存的影响,清楚缓存是常用的事情,所以清空缓存的命令还是必须要常记的,下面是我从其他网站手机的FLUSH的参数flush_option 可以是下列任何东西:HOSTS 这个用的最多,经常碰见。主要是用来清空主机缓存表。如果你的某些主机改变IP数字,或如果你得到错误消息Host ... isblocked,你应该清空主机表。当在连接MySQL服务器时,对原创 2012-09-20 17:48:16 · 13235 阅读 · 1 评论 -
my.cnf for MySQL 5.5 on Linux 2.6.32
Yeah, I am gonna do a good thing for all MySQL DBAs. Here is a configuration example for multi MySQL instances running on Redhat or CentOS 6:123456转载 2013-03-25 13:53:52 · 1009 阅读 · 0 评论 -
MYSQL 浅谈MyISAM 存储引擎
介绍 mysql中用的最多存储引擎就是innodb和myisam。做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教。 特点 > 不支持事务 证明如下: >> 表记录:t2表的engine是myisam。 >> 操作转载 2013-03-26 14:50:00 · 822 阅读 · 0 评论 -
MySQL Timeout解析
在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?本期Out-man,讲述咱们MySQL DBA自己的Timeout。先看一下比较常见的Timeout参数和相关解释:connect_timeoutThe number of seconds that the mysqld serve转载 2013-03-28 10:11:02 · 804 阅读 · 0 评论 -
show processlist 命令详解
如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的 MySQL 帐户运行的线程)。mysql> show processlist;+—–+————-+——————–+| Id | User | Host | db | Command | Time| State | Info+—–+————-+——————–+原创 2013-08-29 10:15:46 · 2833 阅读 · 0 评论 -
5种mysql日志分析工具比拼
mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具. 启用 slow log有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name]2, 在mysqld进程启动时,指定–log-slow-queries[=file_name]选项 比较五款常用工具my转载 2013-08-27 12:10:06 · 11160 阅读 · 0 评论 -
MySQL监控、性能分析——工具篇
MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析、监控预警、容量扩展议题越来越多。“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析、监控预警、容量扩展问题上得到更好的解决方案,就要利用各种工具来对MySQL各种指标进行分析。本文是读书笔记,下面提及的工具,读者可能都用过,或打算准备是使用。MySQL服务器的发布包没有包含那些能完成许转载 2013-08-27 09:58:18 · 1889 阅读 · 0 评论 -
使用pt-query-digest分析mysql slow query log
high performance MySQL笔记:孔子说“工欲善其事,必先利其器”, 今天就介绍一下percona toolkit中的pt-query-digest。下载地址:http://www.percona.com/software/percona-toolkit/官方文档:http://www.percona.com/doc/pe转载 2013-07-08 16:16:35 · 9478 阅读 · 0 评论 -
pt-query-digest分析Mysql慢查询,Query-Digest-UI生成报表
下载地址:http://www.percona.com/softwarehttps://github.com/kormoc/Query-Digest-UI1、Percona ToolkitPercona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要包括:1、验证主节点和复制数据的一致性2、有效的对记录行进行归档3、找出重复的索引转载 2013-07-08 16:22:28 · 2991 阅读 · 0 评论 -
mysql下的索引使用原则
为表建立索引,无疑是对数据库比较好的优化方式之一。以下是自己对索引的总结。 MYSQL QUERY Optimizer对索引的选择1.即使一个SQL可以选择多个索引,但是大多数情况下它都会选择一个索引,而放弃其它的索引。使用索引的前提:1.索引的存是在where条件之后的。2.在MYSQL中不同的存储引擎对索引的对待也是有点不一样的。原创 2013-05-12 21:03:59 · 1279 阅读 · 0 评论 -
是否需要创建索引的判定标准
实际上,并没有一个非常明确的定律可以清晰地定义什么字段应该创建索引,什么字段不该创建索引。因为应用场景实在是太复杂,存在太多的差异。当然,还是仍然能够找到几点基本的判定策略来帮助分析的。 1、较频繁的作为查询条件的字段应该创建索引 提高数据查询检索的效率最有效的办法就是减少需要访问的数据量,我们知道索引正是减少通过索引键字段作为查询条件的Query的IO转载 2013-05-12 17:39:49 · 1369 阅读 · 0 评论 -
MySQL中EXPLAIN解释命令
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释:table:显示这一行的数据是关于哪张原创 2013-05-12 17:38:27 · 1025 阅读 · 0 评论 -
Mysql优化、索引
1,创建MySql索引 对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加 索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下 降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不转载 2013-05-09 11:33:42 · 1013 阅读 · 0 评论 -
mysql配置中的一些重要参数
虽然运维同事会对mysql做最优配置,但我们也需要知掌握mysql配置中对性能影响比较大的一些配置项。max_connectionsMySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,MySql会为每个连接提供连接缓冲区,就会开销越多的内存,连接数太大,服务器消耗的内存越多,以至于影响服务器转载 2013-03-28 09:58:32 · 963 阅读 · 0 评论 -
使用LVM快照做mysql完全备份和lvm的扩容
在规划mysql数据库时最好将数据和日志分开放到lvm分区中。使用LVM快照备份,需要将数据放在lvm分区。试验中因mysql数据不是放在lvm分区,所以先将数据移到lvm分区。1.把原来存放在普通分区的数据移至LVM中# lvcreate -n mysql_data -L 1G GLSvg –建立lvm分区# mkfs.ext3 /dev/GLSvg/mysql_data转载 2012-09-16 22:03:10 · 2831 阅读 · 0 评论 -
适合MySQL的Xeon 55XX系列CPU编译参数
Xeon 55xx是Intel最新的Nehalem架构处理器,为了充分挖掘它的处理能力,我们做了很多的测试来尝试一些GCC的编译参数,如何获得更高的MySQL性能。首先看处理器支持哪些flags:processor : 15vendor_id : GenuineIntelcpu family : 6model : 26model name : Intel(R)转载 2012-06-05 09:22:19 · 1339 阅读 · 0 评论 -
mysql中索引的使用
索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此。本节中,将介绍索引的作用、特点,以及创建和删除索引的语法。13.4.1 使用索引优化查询索引是快速定位数据的技术,首先通过一个示例来了解其含义及作用,详细的介绍请参考第14章。1.索引示例假设对于10.3节所建的表,各个表上都没有索引,数据的排列也没有规律,如表13.3所示。表13.3转载 2012-05-14 13:30:20 · 9690 阅读 · 1 评论 -
监控mysql执行的语句
为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句,可以在/etc/mysqld中添加如下:log =/usr/local/mysql/var21005/mysql.log就可以使用:tail -f mysql.log来监控了如果需要监控慢查询可以添加如下内容:log-slow-queries = /usr/local/mysql/var21原创 2012-05-10 09:47:49 · 2181 阅读 · 0 评论 -
sql语句中的count
不考虑Null的情况, 如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null.count(1)和count(主键) 这两个只扫描主键Index就可以得到数据,count(*)是扫描表的。所以count(1)和count(主键)这两个效率高。还有一种写法是count(ROWID)这也是只扫描Index的,效率高。当表的数据量大些时,对表作分转载 2012-05-09 10:13:46 · 2955 阅读 · 0 评论 -
mysqld服务器CPU/IOWAIT瞬间出现峰值的问题
自从nagios报警服务配置完善以后,潜伏在DB上的问题变得愈加凸显,这期间还经历了三番五次的机器故障,于是就更加紧绷了我们对于目前DB状态的关注度,通过cacti看每组机器资源的使用情况,通过nagios的alert提示会知道哪些异常在频繁出现,尽管没有发出报警通知(报警策略:所有服务检测每个5分钟扫描一次,发现故障第一次提示开始,每隔1分钟再去尝试,一共4次,当确认该服务失败或者超过阀值后,将转载 2012-05-08 10:33:49 · 1330 阅读 · 0 评论 -
mysql多实例学习
mysql多实例,每个实例的datadir,pid,port,socket应该是不同的一、基础,很重要每个实例应该在自己的datadir下配置my.cnf文件。首先说下配置文件的查找顺序第一搜,首先读取/etc/my.cnf第二搜,$datadir/my.cnf,在data目录下寻找此配置文件,每个实例应该在自己的datadir下配置my.cnf文件。第三搜,def原创 2012-03-16 11:37:59 · 4554 阅读 · 0 评论 -
性能测试必备SQL语句总结
一、基础1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwin转载 2012-02-25 11:36:48 · 1383 阅读 · 0 评论 -
sql表的连接查询详解
一、交叉连接(CROSS JOIN)交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。例如:下面的语句1和语句2的结果是相同的。语句1:隐式的交叉连接,没有CROSS JOIN。SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAMEFROM ORDERS O , CUSTOMERS C转载 2012-02-22 18:25:01 · 1080 阅读 · 0 评论 -
mysql的锁机制
今天没事就学习一下mysql的三种锁机制的优缺点:MySQL各存储引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁定和表级锁定。下面我们先分析一下MySQL这三种锁定的特点和各自的优劣所在。● 行级锁定(row-level)行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予原创 2012-02-06 10:32:52 · 871 阅读 · 0 评论 -
Mysql中Profiling之性能分析
MySQL5.0.37版本以上支持了Profiling – 官方手册。此工具可用来查询 SQL 会执行多少时间,System lock和Table lock 花多少时间等等,对定位一条语句的 I/O消耗和CPU消耗 非常重要。从启动profile之后的所有查询包括错误的语句都会记录。关闭会话或者set profiling=0 就关闭了。# 开启 profilingmysql&g原创 2012-02-06 11:55:16 · 2078 阅读 · 0 评论 -
mysql 建立索引的原则
索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则:1. 在经常用作过滤器的字段上建立索引; 2. 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引; 3. 在不同值较少的字段上不必要建立索引,如性别字段; 4. 对于经常转载 2012-05-16 16:37:46 · 9072 阅读 · 0 评论 -
mysql 主从同步
mysql主从同步部署: master:192.168.2.67slave:192.168.2.211同步系统非默认库,master中其它库已经运行一段时间。 master端:vim /etc/my.cnfserver-id = 1 master端ID号log-bin=/data/logbin/mysql-b转载 2012-07-05 15:02:52 · 855 阅读 · 0 评论 -
mysql 主从同步原理
Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的告终全副复制过程重要由三个线程来告终,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Mas转载 2012-07-05 15:03:53 · 2395 阅读 · 0 评论 -
mysql调优三步曲(慢查询、explain profile)
mysql profile explain slow_query_log分析优化查询在做性能测试中经常会遇到一些sql的问题,其实做性能测试这几年遇到问题最多还是数据库这块,要么就是IO高要么就是cpu高,所以对数据的优化在性能测试过程中占据着很重要的地方,下面我就介绍一些msyql性能调优过程中经常用到的三件利器:1、慢查询 (分析出现出问题的sql)2、Explain (显示了my原创 2012-09-13 18:13:47 · 11718 阅读 · 0 评论 -
刚写的一个使用shell操作数据库
#!/bin/bashlog='SQL_insert_one.sh.log' #定一个日志文件便于我们定位bugif [ ! -e $log ]; then #如果日志文件不存在就新建一个 touch $logfidate=$(date "+%Y-%m-%d__%H:%M:%S") #记录打印日志的时间echo >> $logecho原创 2012-09-12 12:01:55 · 5682 阅读 · 0 评论