order by 导致索引选择错误
线上出现的慢SQL: SELECT c.id FROM fnbl_pim_contact AS c WHERE c.fuserid = 6246640 and (first_name !='' or middle_name is not null and middle_name !='' or last_name !='') AND c.status in ('N','U') order by id limit 1; 需要十多秒甚至更长时间才能出来结果。 这个表的大小...
pt-online-schema-change 使用异常处理及注意事项
pt-online-schema-change最近使用pt-online-schema-change 做线上大表的在线DDL,发现几个问题。我使用的语句如下:pt-online-schema-change --user=root --password="xxxxx" --host=192.168.xx.xx D=M_xx,t=T_xx --alter "ADD Fxxxxx'" --charset=utf8 --no-check-replication-filters --alter-foreign-keys-met...
宕机导致slave异常分析
主键冲突,master插入一条记录,写入binlog,slave 上IO进程从主库获取这条记录的信息并写入relay-log,接着slave的SQL进程解析到这条记录,并写入到slave,完成一条记录的复制。复制过程中会涉及到文件有: SQL线程执行到了master的哪个文件和pos以及relay-log文件和pos位置,这个文件有SQL线程负责更新master.inf...
WHRER条件里的数据类型必须和字段数据类型一致
首先看案例:表中字段FPHONE_IMEI是varchar类型的,主键也建立在FPHONE_IMEI 字段上,原则上只要where条件中用到了这个字段,就会走索引,这也是建立索引的目的,可事实是这样子么。首先看下面这条查询,初看,唯一值查询走索引应该很快,实际上呢,从执行计划可以看出,没有使用到索引,而是全表扫描,所...
pt-online-schema-change使用
公司一个业务的DB表结构因为需求不断变动,表结构随着需求的变动不断需要修改,更改字段类型,增加字段。最苦逼的是其中两个主表都特别大,一个5000W以上,另外一个更恐怖达到1亿多。以前都是采用分区,后面考虑到分区字段没有实际意义,导致分区的优势没有体现出来,只是起了个心里作用而已,也不知道当时这个设计是从...
mysql配置文件中mysqld_safe介绍
1、mysqld_safe相比于mysqld,增加了一些安全特性。例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。【mysqld_safe启动并监视mysqld,如果因错误终止则重启。】用mysqld...
centos6.4安装Tokudb
在percona官网下载带有Tokudb的二进制包,也可以选择源码编译。tokudb有单独的包,但是percona-Server包中已经包含了Tokudb,所以就不需要下载了。我这里下载的是最新的包,5.6.19-67解压 tar -zxvf Percona-Server-5.6.19-rel67.0-618.Linux.x86_64.tar.gz将解压文件夹,拷贝到/usr/local下面,此时可以重命名,我这里重...
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
今天开发反映说开发环境一台mysql操作报错:ERROR 1206 (HY000): The total number of locks exceeds the lock table size是在做一个update的时候报错的,我要来语句,换成select查看了一下数据量,600多W。查看 max_write_lock_count 的值,是 8446744073709551615,肯定够用了。再查看 innodb_buffer_pool_size,是默...
SUBSTRING_INDEX
SUBSTRING_INDEX() 以分界符号取其中的字串SUBSTRING_INDEX(str,delim,count)str傳入的字串delim傳入的分界符号count傳入的取样次数在传入字串str中,以传入的分界符号delim为分界点,取采样数count的結果取子字串。若count为正值则回传左边第count的分界符号之左边的一切...
mysql lower-case-table-names参数
线上有业务用到开源的产品,其中SQL语句是大小写混合的,而建表语句都是小写的,mysql默认设置导致这些执行失败。就需要设置忽略大小写。设置lower-case-table-names=1,重启mysql实例生效。这时就产生了另外一个问题,之前的大写字母的数据库名都失效了。都提示找不到数据库名。注释掉个lower-case-table-names=1.则没...
不重启mysqld更改root密码
Ever found yourself working on a MySQL server where root’s password is unavailable? It has happened to me a few times, always because the person who set up the DB left the place long ago, and this information was not documented anywhere.If you have root access to the OS, MySQL lets you restar...
max_length_for_sort_data 参数
mysql有两种文件排序算法(双路排序和单路排序),如果需要排序的列的总大小加上order by列的大小超过了 max_length_for_sort_data定义的字节,mysql就会使用双路排序,当任何需要的列甚至不是用order by的列(text....
ERROR 1661 (HY000): Cannot execute statement: impossible to write to binary
今天在导数的过程中报错:ERROR 1661 (HY000): Cannot execute statement: impossible to write to binary 这是因为,相关语句不能写入二进制日志导致,在会话中关闭sql-log-bin,set sql_log_bin=0;&n...
mysql slave-skip-errors
在mysql复制配置过程中,show slave status,出现last_sql_error: IO线程正常,SQL线程不正常,导致复制出问题。因为之前把从库的一个库删除了,sql语句在执行时找不到相关表,从而报错。解决办法,stop slave...
linux ulimit设置
ulimit用于shell启动进程所占用的资源.2,类别:shell内建命令3,语法格式:ulimit [-acdfHlmnpsStvw] [size]4,参数介绍:-H 设置硬件资源限制.-S 设置软件资源限制.-a 显示当前所有的资源限制.-c size:设置core文件的最...
mysql innodb新建索引堵塞update ,insert,delete
在对innodb表建索引时,特别要注意,在索引新建的过程中会堵塞所有的DML语句,因此,这种给大表建索引,务必在无业务进行的时候。
Mysql next-locking 间隙锁
mysql innodb间隙锁就是不仅仅锁住所需要的行(如果锁住的这行不存在)还会锁住一个范围的行,这个范围依据锁住的这行而定。上下刚好是两个相邻索引叶节点的范围。包含下范围,不包含上范围。eg:t表的...
mysql innodb 索引失效问题引起表级锁
mysql innodb表的索引统计信息对表锁的有很大的影响,这件影响是通过索引失效导致的。都知道innodb有索引的话,采用的是行级锁,没有索引或者索引失效后采用的是表级锁,而表级锁对并发性能是大打折扣的。所以说如果...
mysql sql_mode
create table test(x varchar(4),b varchar(4))sql_mode有三种:一、ansi 对于不符合定义的值,会截断到符合定义类型mysql>set @@sql_mode=ansimysql> insert into test values('aaaaa','aaaaa'),('bbbb...
mysql 隔离级别
mysql支持四个隔离级别,分别是:1.read uncommitted2.read committed3.repeatable read4.SERIALIZABLE 几个级别都可以再session和global中设置,session设置对当前会话有效,而global设置...