对于面试又给我问到MySQL索引【索引的使用策略及优化】感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mysql索引使用技巧及注意事项,并为您提供关于Can''tconnecttolocalM
对于面试又给我问到 MySQL 索引【索引的使用策略及优化】感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mysql 索引使用技巧及注意事项,并为您提供关于Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的有用信息。
本文目录一览:- 面试又给我问到 MySQL 索引【索引的使用策略及优化】(mysql 索引使用技巧及注意事项)
- Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)
- Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''
- CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
- centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?
面试又给我问到 MySQL 索引【索引的使用策略及优化】(mysql 索引使用技巧及注意事项)
精选文章
2020 最新版 MySQL 数据库面试题(一)
2020 最新版 MySQL 数据库面试题(二)
MySQL 上亿大表优化实践
别怕!MySQL 引起的 CPU 消耗过大,我有办法
MySQL 的查询需要遍历几次 B + 树,理论上需要几次磁盘 I/O?
五、索引的使用策略
什么时候要使用索引?
主键自动建立唯一索引;
经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
作为排序的列要建立索引;
查询中与其他表关联的字段,外键关系建立索引
高并发条件下倾向组合索引;
用于聚合函数的列可以建立索引,例如使用了 max (column_1) 或者 count (column_1) 时的 column_1 就需要建立索引
什么时候不要使用索引?
经常增删改的列不要建立索引;
有大量重复的列不建立索引;
表记录太少不要建立索引。只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快 -- 不管有没有使用索引。只有当数据库里的记录超过了 1000 条、数据总量也超过了 MySQL 服务器上的内存总量时,数据库的性能测试结果才有意义。
索引失效的情况:
在组合索引中不能有列的值为 NULL,如果有,那么这一列对组合索引就是无效的。
在一个 SELECT 语句中,索引只能使用一次,如果在 WHERE 中使用了,那么在 ORDER BY 中就不要用了。
LIKE 操作中,''% aaa%'' 不会使用索引,也就是索引会失效,但是‘aaa%’可以使用索引。
在索引的列上使用表达式或者函数会使索引失效,例如:select * from users where YEAR (adddate)<2007,将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:select * from users where adddate<’2007-01-01′。其它通配符同样,也就是说,在查询条件中使用正则表达式时,只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。
在查询条件中使用不等于,包括 <符号、> 符号和!= 会导致索引失效。特别的是如果对主键索引使用!= 则不会使索引失效,如果对主键索引或者整数类型的索引使用 < 符号或者 > 符号不会使索引失效。(经 erwkjrfhjwkdb 同学提醒,不等于,包括 < 符号、> 符号和!,如果占总记录的比例很小的话,也不会失效)
在查询条件中使用 IS NULL 或者 IS NOT NULL 会导致索引失效。
字符串不加单引号会导致索引失效。更准确的说是类型不一致会导致失效,比如字段 email 是字符串类型的,使用 WHERE email=99999 则会导致失败,应该改为 WHERE email=''99999''。
在查询条件中使用 OR 连接多个条件会导致索引失效,除非 OR 链接的每个条件都加上索引,这时应该改为两次查询,然后用 UNION ALL 连接起来。
如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否则索引失效。特别的是如果排序的是主键索引则 select * 也不会导致索引失效。
尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引;
六、索引的优化
1、最左前缀
索引的最左前缀和和 B+Tree 中的 “最左前缀原理” 有关,举例来说就是如果设置了组合索引 < col1,col2,col3 > 那么以下 3 中情况可以使用索引:col1,<col1,col2>,<col1,col2,col3>,其它的列,比如 < col2,col3>,<col1,col3>,col2,col3 等等都是不能使用索引的。
根据最左前缀原则,我们一般把排序分组频率最高的列放在最左边,以此类推。
2、带索引的模糊查询优化
在上面已经提到,使用 LIKE 进行模糊查询的时候,''% aaa%'' 不会使用索引,也就是索引会失效。如果是这种情况,只能使用全文索引来进行优化(上文有讲到)。
3、为检索的条件构建全文索引,然后使用
SELECT * FROM tablename MATCH(index_colum) ANGAINST(‘word’);
4、使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个 CHAR (255) 的 列,如果在前 10 个或 20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和 I/O 操作。
(完结)
本文同步分享在 博客 “lxw1844912514”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)
ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)
原因:系统盘满了
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#
解决:
删除大文件后,重启系统解决
[root@localhost mysql]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is not running.
ProFTPD is running.
df: 未处理文件系统
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#
[root@localhost ~]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is running.
ProFTPD is running.
转
xampp 无法启动mysql 找不到mysql.sock
(2016-02-24 23:21:24)
分类: 技术 |
如果xampp中的mysql启动不了,出现ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)报错,
停止xampp的时候报:
-bash-4.1# /opt/lampp/lampp stop
Stopping XAMPP for Linux 1.8.2-6...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
fail.
解决办法:
如果网上一些方法不好用的话,可以试试以下方法:
1. 确定系统盘是否满了
#df -h
2. 删除/opt/lampp目录中的pid文件(删掉后xampp重启时会重建,如果不放心,可以先备份lampp目录)
删除mysql相关缓存:
#rm -rf /opt/lampp/var/mysql/VM_*
删除proftp相关缓存:
#rm -rf /opt/lampp/var/proftpd.pid
如果找不到pid文件,可以搜一下:
#find /opt/lampp -name ''*.pid''
Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''
MySQL已经被我移到数据盘了,本地连接数据库会报错:Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''
但是远程是可以连接的,my.cnf设置mysql的根目录也改成了数据盘的地址,还要在加上client的参数,设置如下:
[client]
socket = /home/data/mysql/mysql.sock
之后重启下mysql就可以了
CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
亲,是不是忘记了开MysqL服务,service MysqLd startcentos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?
centos7 设置 mysql 自启动的配置文件中
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 #Restart=on-failure #RestartPreventExitStatus=1 #PrivateTmp=false
这里的
[Service]
User=mysql
Group=mysql,
user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?还是其他呢?
今天关于面试又给我问到 MySQL 索引【索引的使用策略及优化】和mysql 索引使用技巧及注意事项的介绍到此结束,谢谢您的阅读,有关Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?等更多相关知识的信息可以在本站进行查询。
本文标签: