影响mysql索引的一些注意事项

1.条件字段函数操作。对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能

2.隐式类型转换 。在 MySQL 中,字符串和数字做比较的话,是将字符串转换成数字。

3.隐式字符编码转换。就是类似于上面类型转换

总结:对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。

mysql 替换like查询的几种方法

MySQL比like语句更高效的写法 
locate 
position 
instr 
find_in_set
 

  1. 标签: locate instr find_in_set    分类: MySQL  
  2. 你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种。  
  3.   
  4. LIKE语句  
  5. SELECT `column` FROM `table` where `condition` like `%keyword%'  
  6.   
  7. 事实上,可以使用 locate(position) 和 instr 这两个函数来代替  
  8.   
  9. 一、LOCATE语句  
  10. SELECT `column` from `table` where locate(‘keyword’, `condition`)>0  
  11.   
  12. 二、或是 locate 的別名 position  
  13. POSITION语句  
  14. SELECT `column` from `table` where position(‘keyword’ IN `condition`)  
  15.   
  16. 三、INSTR语句  
  17. SELECT `column` from `table` where instr(`condition`, ‘keyword’ )>0  
  18.   
  19. locate、position 和 instr 的差別只是参数的位置不同,同时locate 多一个起始位置的参数外,两者是一样的。  
  20. mysql> SELECT LOCATE(‘bar’, ‘foobarbar’,5);  
  21.   
  22. -> 7  
  23.   
  24. 速度上这三个比用 like 稍快了一点。  

Centos 7开启BBR算法

linux内核默认的拥塞控制算法是cubic,对于中美之间链路这种延迟较高、丢包率中等的网络效果非常差。Google员工开发的BBR拥塞控制算法对网络质量提升很大,这里教大家如何在一台CentOS 7 系统的VPS上,使用BBR拥塞控制算法。

升级内核

首先查看你的Linux内核版本

# uname -a
Linux centos-512mb-sfo2-01 4.12.1-1.el7.elrepo.x86_64 #1 SMP Thu Jul 13 07:25:32 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
主机名后面那个就是版本号了,这里可以看到,这台机子已经升到了最新的4.12版本。
开启BBR拥塞控制算法的要求是Linux内核4.9以上版本,现在主流的Linux发行版内核还停留在2.x,我们需要先升级Linux内核版本。
首先,我们需要增加一个 ELRepo 源。

第一步,让我们添加 ELRepo GPG key:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

第二步,添加源:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

第三步,安装 fastestmirror

yum install yum-plugin-fastestmirror

第四步,安装最新Kernel

yum --enablerepo=elrepo-kernel install kernel-ml

第五步,切换到刚刚下载的新内核

grub2-set-default 0

第六步,重启(重启之后才能切换版本),通过 uname -a 查看内核是否成功切换到最新的版本,确认后我们进入下一步开启BBR

第七步,开启BBR

在/etc/sysctl.conf中加入以下两句

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

检查是否成功设置

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
分别查看可以用和现在使用的拥塞控制算法

[root@centos-512mb-sfo2-01 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno

# sysctl net.ipv4.tcp_congestion_control net.ipv4.tcp_congestion_control = bbr

检查BBR是否正常运行

lsmod | grep tcp_bbr

# lsmod | grep tcp_bbr
tcp_bbr 16384 21
在开启前平均加载速度在2000以内,开启后一般可以稳定在8000以上,可见提升非常巨大