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条件中用到了这个字段,就会走索引,这也是建立索引的目的,可事实是这样子么。首先看下面这条查询,初看,唯一值查询走索引应该很快,实际上呢,从执行计划可以看出,没有使用到索引,而是全表扫描,所...
python 正则表达式
需要从一串字符串中取出()中的所有字符串,采用re模块来做,记录一下:具体采用的是:前向界定与后向界定有时候需要匹配一个跟在特定内容后面的或者在特定内容前面的字符串,‘(?<=…)’ 前向界定括号中‘(?=…)’ 后向界定括号中的1. Python正则式的基本用法1.2...
python生成器的效率
今天在做一个list处理,由于内容较多,导致迟迟不过来结果,用性能分析后,发现慢在构造list的过程中。由于是将所有数据都记载到内存计算,导致速度太慢。后面找到解决方案是采用yield构造生成器来处理。速率大大的提升。下面就针对yield和不适用yield做一个性能呢个对比,采用经典的斐波拉契数列计算。def fib(n):res...
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的分界符号之左边的一切...
python list 排序
python 列表list排序sortpython 列表list中内置了一个十分有用的函数sort,sorted,它可以用于列表的排序,以下是例子。a = [5,2,1,9,6] sorted(a) #将a从小到大排序,不影响a本身结构sorted(a,revers...
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...
CHECK_NRPE: Error - Could not complete SSL handshake.
nagios服务器端报错:CHECK_NRPE: Error - Could not complete SSL handshake.检查客户端配置文件nrpe.cfg其中有一项是allow_hsots ,这要指向 nagios服务器端。更改之后,问题解决...
bash时间处理
bash中时间处理主要通过date命令实现,转自网上一篇文章date命令 date命令的功能是显示和设置系统日期和时间。 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接...
python 时间处理
日期相关的包:import timeimport datetimed1 = datetime.datetime.now() 获取当前时间d3 = d1 + datetime.timedelta(days = -1) 获取前一天时间timedelta() 函数可用于计算时间间隔, ...
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...