摘要:二叉树:二叉树(Binary Tree)是指至多只有两个子节点的树形数据结构,没有父节点的节点为根节点,没有子节点的节点称为叶子节点。二叉搜索树就是任何节点的左子节点小于当前节点键值,右子节点大于当前节点键值。如下图的二叉搜索树,我们最多只需要⌈ l o g ( n ) ⌉ ⌈log(n)⌉⌈log
阅读全文
摘要:问题背景:客户反馈mysql服务启动失败报错如下 1 Starting MySQL....The server quit without updating PID file[FAILED]mysql/mysql.pid). 尝试直接启动 1 [root@host-10-10-208-42 data]
阅读全文
摘要:问题背景: MySQL服务启动失败 协助启动数据库时发现日志中大量的表空间文件异常的错误信息 1 [ERROR] [MY-011971] [InnoDB] Tablespace 'innodb_undo_001' Page [page id: space=4294967279, page numbe
阅读全文
摘要:本地到数据库的端口是可以正常连接,但是通过数据库命令连接时,连接长时间卡主无结果,此时数据库查看有异常的连接解析到的用户名称是unauthenticated user状态,下方test用户为正常的连接请求状态。 查看数据库的安装日志发现安装过程有部分缺失系统包的异常被忽略,帮助重新安装VC环境,安装
阅读全文
摘要:我接触过很多公司的数据库架构都缺乏有效合理的设计,如果早期的设计不合理,后期随着表数据量的增加就不可避免的进行表结构变更。 分享一例MySQL千万级大表在线变更表结构的案例。处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 一、问题背景 MySQL数据库存储的是结构化的数据类型,数据表记录从
阅读全文
摘要:索引是一种提高我们查询效率的数据结构,大家肯定很熟悉,在日常数据库优化工作中经常会接触到。 今天说一说索引的底层结构。 【索引结构】 MySQL 索引一般是哈希表或 B+ 树,常用的 InnoDB 引擎默认使用的是 B+ 树来作为索引的数据结构。 为什么不用哈希表? 什么是哈希表? 哈希表(也叫散列
阅读全文
摘要:问题背景: 一、客户环境连续多次出现性能问题,系统登入异常,数据库CPU告警。 处理过程: 1>协助排查数据库性能问题时发现如下两个较频繁的SQL导致严重的性能问题(均使用了视图合并多表数据): 1 1. SELECT nodename FROM view_name1 WHERE id = xxx;
阅读全文
摘要:基于mysql的SQLadvisor工具一次优化尝试 使用方式: 1 1> [root@SQLAdvisor ~]# getenforce 2 Disabled 3 安装SQLAdvisor 4 [root@SQLAdvisor ~]# yum -y install cmake libaio-dev
阅读全文
摘要:分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。对于全局级别则作用于整个MySQL实例,而session级别紧影响当前session。该参数开启后,后续执行的SQL语句都将记录其资源
阅读全文
摘要:1> 问题描述 某客户集团反馈某模块崩溃,导致系统异常,系统无法登陆; 关闭该模块浏览模块后,系统才恢复正常问题重复出现多次。 处理过程 协助排查问题优化过程中发现查询该模块的一个长SQL导致性能问题,其中引发问题的主要原因在下图中的部分SQL片段: 以上SQL中workflowtye在流程表中存放
阅读全文
摘要:常用参数 1 –concurrency #代表并发数量,多个可以用逗号隔开。例如:–concurrency=50,200,500 2 –engines #代表要测试的引擎,可以有多个,用分隔符隔开。例如:–engines=myisam,innodb,memory 3 –iterations #代表要
阅读全文
摘要:问题背景: 客户反馈slave每到凌晨就出现延迟现象,需要排查原因 1>首先查看master库每天凌晨有什么操作: 分析binlog日志 1 mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000204 > mys
阅读全文
摘要:问题背景: 客户反馈系统性能存在严重问题,需要协助排查 排查发现系统有大量锁持有资源时间过长 临时手工KILL产生死锁源头的会话, 协助排查死锁产生的原因发现,业务提交至此节点,项目二开嵌套了一个其他事务导致死锁频发。 死锁产生的原因: ①会话A,update 1 nocommit②会话B,upda
阅读全文
摘要:问题语句 SELECT * FROM a WHERE `type` = 'appointment' AND `event` = 14 AND EXISTS ( SELECT * FROM b WHERE a.`sheet_id` = b.`id` AND `company_id` = 8 AND b
阅读全文
摘要:1> 关闭防火墙和selinux 关闭防火墙 1 service iptables stop 2 chkconfig --level 345 iptables off 关闭selinux 1 setenforce 0 2 cat /etc/SELINUX/config | grep selinux=
阅读全文
摘要:双主+keepalived+haproxy配置(负载均衡) 实验系统:CentOS 6.5_x86_64实验前提:防火墙和selinux都关闭实验软件:keepalived-1.2.13 haproxy-1.8.13 mysql—5.7.21主1 ip:192.168.226.134主2 ip:19
阅读全文
摘要:一、简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参
阅读全文
摘要:1> MySQL的binlog 日志对于生产环境非常有用,任何时间对数据库的修改都会记录在binglog中;当数据发生增删改,创建数据库对象都会记录到binlog中,数据库的复制也是基于binlog进行同步数据;和SQL SERVER 数据库开启完整模式的原理一样,每一次的数据的变动都会记录在案;(
阅读全文
摘要:1> pt-index-usage:从慢查询日志中读取查询并分析它们如何使用索引。 (用来查找不常使用索引) ./pt-index-usage --help 打印报告 1 ./pt-index-usage /mysqldata/mysqlslowlog/slowquery.log -h192.168
阅读全文
摘要:MySQL安装后的设置和测试(参考MySQL官方文档) 本文讨论安装MySQL后应执行的任务:如有必要,初始化数据目录并创建MySQL授权表。对于某些MySQL安装方式,以下安装方式可以自动进行数据目录初始化:1、由MySQL安装程序执行的Windows安装操作。2、使用Oracle的服务器RPM或
阅读全文