最佳实践
文章平均质量分 80
ELEVENS
这个作者很懒,什么都没留下…
展开
-
MySQL SQL查询中where条件提取规则以及ICP(index condition pushdown)解析
1问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的。因此,本文挑选了其中的部分内容,也是我一直都想写的一个内容,做重点介绍:给定一条SQL,如何提取其中的where条件?where条件中的每个子条件,在SQL执行的过程中有分别起着什么样的作用?通过本文的介绍,希望读者能够更好..转载 2022-01-18 15:15:06 · 514 阅读 · 0 评论 -
MySQL/InnoDB的加锁分析
1. 背景MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,转载 2022-01-18 15:10:53 · 550 阅读 · 0 评论 -
MySQL5.6Innodb表的特性和极限
Innodb表限制:(详见MySQL官网http://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html)1.单表最多1017个字段。2.但表最多可建64个普通索引。3.默认情况下(innodb_page_size=16K),前缀索引最多包含767个字节。如果开启innodb_large_prefix,且Innodb翻译 2016-10-26 09:37:22 · 3600 阅读 · 0 评论 -
MySQL冗余索引清理规则
第一个索引是第二个索引的左前缀索引, 删除第一个索引有主键, 用不到唯一索引, 删除唯一索引有主键, 用不到普通索引, 删除普通索引有唯一索引, 用不到普通索引, 删除普通索引有联合主键索引, 用不到普通组合索引, 删除普通组合索引索引重复, 删除其中一个索引普通索引默认以主键索引做后缀, 重建普通索引原创 2016-11-04 16:03:46 · 1525 阅读 · 0 评论 -
MySQL5.6在线表结构变更(online ddl)总结
MySQL从5.6.17以后,支持在线修改表结构操作(online ddl),即在变更表结构的过程中,不阻塞dml和dql操作,这对dba来说无疑是个巨大的利好,如果你有过千万级别数据的表中修改表结构的经历,你一定会同意我的说法。 根据操作过程中是否需要表拷贝,online ddl可分为下面两大类:1.需要表拷贝的 ddl 操作:增加、删除、重排列。增加、删除主键。改变表的原创 2016-10-14 16:16:26 · 1975 阅读 · 0 评论 -
MySQL存储Emoji表情符号问题及解决方案
emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符),现已普遍应用于手机短信和网络聊天软件,是很流行使用的一种表情字符。MYSQL 5.5 之前, UTF8/utf8mb3 编码只能存储最大3个字节的字符, 从MYSQL5.5开始,可支持4个字节UTF编码字符,但要特殊标记,即显式定义表或字段为utf8mb4编码类型。如果表或字段已经定义为utf8原创 2016-10-26 10:34:12 · 5716 阅读 · 0 评论 -
mysqlbinlog异常之mysqlbinlog: unknown variable 'default-character-set=utf8'
本文转自:http://shanchao7932297.blog.163.com/blog/static/136362420112229736293/问题现象:1. MysQL 版本: mysql-5.1.41,5.6.27-log2. 在使用mysqlbinlog分析日志时,报错:mysqlbinlog: unknown variable 'default-charact转载 2016-10-20 07:20:24 · 953 阅读 · 0 评论 -
MySQL 5.6 create table like 同步异常问题分析与总结
我们都知道,mysql5.6版本如果设置了enforce-gtid-consistency=true,则mysql禁止执行create table ... select ...语句,原因是这条语句在mysql内部会被分解成一个dml事务和一个ddl事务,但这两个事务用同一个gtid,binlog同步到从库后,第二个dml语句因为相同gtid的事务已经执行过而被丢弃,造成数据不一致(详见MySQL官原创 2016-11-17 09:40:58 · 1666 阅读 · 0 评论 -
系统管理常用命令
1. debian设置静态主机名echo 'hostname' >> /etc/hostname2. 设置静态ipecho 'address 127.0.0.1' >> /etc/network/interfaces原创 2016-07-19 16:51:09 · 372 阅读 · 0 评论 -
MySQL查看事务锁信息
MySQL的information_schema库下有四张(实际上是系统视图):INNODB_LOCKS、INNODB_TRX、INNODB_LOCK_WAITS、PROCESSLIST记录了当前在mysql上的事务,线程,锁的信息。通过下面这条sql语句,可以查询锁与被锁的事务或线程的信息,语句如下: use information_schema;select a.trx_mysq原创 2016-12-28 21:43:10 · 3739 阅读 · 0 评论 -
Innodb表的物理存储结构及特性
Innodb表的物理存储结构:当innodb表使用冗余(REDUNDANT)行存储格式有如下特性:1.每个索引记录包含一个6字节的头,用于将逻辑上连续的记录链接到一起,同时也用于行级锁。2.聚集索引记录包含所有用户定义的列,即包含表中所有字段。此外,还有6字节的事务ID域,和7字节的回滚指针域。3.如果表没有定义主键,每个聚集索引则会包含6字节的ROW ID域。4.每个翻译 2016-10-12 11:38:31 · 1113 阅读 · 0 评论 -
MySQL Jdbc驱动的rewriteBatchedStatements参数--批量修改开关
本文转自:http://www.cnblogs.com/chenjianjx/archive/2012/08/14/2637914.html介绍MySQL Jdbc驱动的rewriteBatchedStatements参数MySQL Jdbc驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,直接造成较低的转载 2016-09-19 13:25:23 · 748 阅读 · 0 评论 -
MySQL(MariaDB)的 SSL 加密复制
本文转自:http://www.cnblogs.com/zhoujinyi/p/4191096.html背景: 在默认的主从复制过程或远程连接到MySQL/MariaDB所有的链接通信中的数据都是明文的,在局域网内连接倒问题不大;要是在外网里访问数据或则复制,则安全隐患会被放大很多。由于项目要求需要直接和外网的一台实例进行同步。所以本文介绍下通过SSL加密的方式进转载 2016-08-18 17:01:56 · 1067 阅读 · 0 评论 -
主从复制在丛库修改字段类型导致复制异常及解决方法
主从复制环境中,通过主从库滚动升级的方式实现升级,首先升级slave,完成后,互换slave与master的角色,然后再升级原master(新slave)。升级过程中如果遇到修改字段定义,可能会出现复制异常,导致复制终止。临时解决方案(Workaround) 1. 库字符集不同 a. 表结构相同且字符集相同,则可以正常复制 b. 表结构相同但字符集不同原创 2016-05-31 09:56:24 · 1712 阅读 · 0 评论 -
MySQL 5.6配置GTID复制模式
1.主从数据库参数文件中加入一下配置:gtid_mode=on enforce-gtid-consistency=on master-info-repository=TABLE relay-log-info-repository=TABLE sync-master-info=1 slave-parallel-workers=2 binlog-checksum=CRC32原创 2016-06-01 14:27:25 · 2322 阅读 · 0 评论 -
Hadoop&HBase部署文档
安装是需要特别注意HBase与Hadoop兼容性问题安装jdkaptitude install openjdk-7-jdk创建hbase用户for i in AP-HB1 AP-HB2 AP-HB3; do echo =====$i=====; ssh $i “groupadd hbase; useradd -m hbase -g hbase -s /bin/bash -d /h转载 2016-07-11 10:54:55 · 548 阅读 · 0 评论 -
HBase 修改TTL 属性释放空间
HBase 修改 TTL 属性,释放空间1.停用相关表hbase(main):010:0> disable ‘ResourceURL’0 row(s) in 1383.2350 seconds2.修改TTL属性hbase(main):015:0* alter ‘ResourceURL’, {NAME=>’value’,TTL=>’2592000′}Updating转载 2016-07-11 10:57:14 · 2932 阅读 · 0 评论 -
mysql 锁超时定位与分析
mysql 锁超时调查方法此SQL可以显示锁等待的详细信息,包括阻塞SQL,被阻塞SQL及阻塞时间等。select r.trx_id as waiting_trx_id, r.trx_mysql_thread_id as waiting_thread, TIMESTAMPDIFF(SECOND, r.trx_wait_started, CURRENT_TIMESTAMP) as wait_原创 2016-07-04 15:39:41 · 771 阅读 · 0 评论 -
多重复制架构下的MySQL升级实践:5.1-5.5
升级前准备1.下载mysql-5.5.42、mysql-5.6.23到/usr/local目录下cd /usr/localwget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.42-linux2.6-x86_64.tar.gzwget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-原创 2016-05-05 16:12:56 · 711 阅读 · 0 评论 -
MySQL常见问题分析及解决方法
1.MySQL5.6,往内存表中插入数据,报错:ERROR 1114 (HY000): The table 'ISPBased1Mem' is full分析:MySQLMEMORY存储引擎表大小由系统变量max_heap_table_size控制,默认大小为16M。往表中插入超过16M大小的数据会报上述错误。解决方法:修改max_heap_table_size的大小,将其设为更大的值,并重原创 2016-08-02 10:30:15 · 968 阅读 · 0 评论 -
MySQL高可用方案MHA部署
参考文章:http://ylw6006.blog.51cto.com/470441/890360http://blog.itpub.net/26230597/viewspace-1570798/1.下载mha manager 和 node程序https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2原创 2016-07-22 09:11:00 · 374 阅读 · 0 评论 -
不带MASTER_LOG_FILE,MASTER_LOG_POS参数,执行change master 语句复制异常
-------------分析日志-------------1.先停止复制进程:dbadmin@(none) 08:05:45>stop slave;Query OK, 0 rows affected (0.10 sec)2.查看丛库的状态及复制点坐标:dbadmin@(none) 08:05:52>show slave status \G***************原创 2016-05-10 16:59:48 · 6054 阅读 · 0 评论