GVKun编程网logo

Mysql-聚簇索排序慢案例分析(聚簇索引mysql)

2

此处将为大家介绍关于Mysql-聚簇索排序慢案例分析的详细内容,并且为您解答有关聚簇索引mysql的相关问题,此外,我们还将为您介绍关于Can''tconnecttolocalMySQLservert

此处将为大家介绍关于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)

Mysql-聚簇索排序慢案例分析(聚簇索引mysql)

为什么当 执行select较多时应当使用mysiam引擎呢?尤其是在有索引的情况下

本篇章依托一个实际应用,分析一下。

一.前言:

网上看到有一个有趣的现象,一个有1W数据量的表,执行不同的orderby条件,查询时间非常大,这个是实际应用中确实出现的问题??为什么呢?

二.分析

a).情况描述:

1.有主键id,联合索引(id,ver);用前者当orderby查询慢,用后者orderby查询会很快;

2.每一行的数据量挺大

3.id为主索引,而select查询的字段也仅仅有id,那么不就是索引覆盖了呗,不用到物理磁盘回行数据,在索引上就能拿到要的数据了,但本应该查询更快的却慢了。Mysql-索引覆盖

b).分析:

肯定用的不是mysiam引擎,若是的话用这两个索引查询,其实速度是差不多的,因为索引上存的都是一个物理行的地址嘛,实际占有的数据量又不大。但如果是innodb就不一样了,它的主索引下边可是拖家带口存放着该行的所有数据的。

c).结论:

1.主因:用的innodb引擎

是聚簇索引,主键ID索引还下拖家带口的挂着该行的其他数据,导致沿着ID排序时,要跨过好多小块才能查询遍历每个ID;(而mysiam下头没那么多数据,跨过相同的数据块会更快,遍历更多的行)

2.从因:有几个字段下的数据量比较大,即拖家带口带的人还比较多,数据量比较大。每行数据量大,在磁盘存储时占用的块儿也多

3. 当时mysiam引擎时不存在这个问题

d).映射结论:

当 执行select较多时,应当使用mysiam引擎,

当执行 insert,update多时使用innodb引擎

更多结论请看:Mysql-索引总结

三.模拟测试

还原上面所说的条件,建立连个表,控制变量,除了引擎不同外,其余条件相同,主键ID主索引,联合索引(id,ver)。

1.新建表t7,mysiam引擎

2.随机插入一万条数据

3.执行查询语句,查看时间

显然,时间相差不太大,都是一个量级的。

4.新建表t8,innodb引擎

5.随机插入一万条数据

小插曲,按照上边脚本执行语句,等待时间非常长,为什么呢?因为其为聚簇索引,有主键索引ID,在创建主键索引的时候,行的数据块大量移动,有分裂移动的时间在里边。

操作是先删除主键索引ID,插入数据后在add primary key(id),再创建主键索引结构

6.执行查询语句,查看时间

显然,时间相差差别很大。

原因:两个语句都用到了聚簇索引,只是主键的跨块儿太多,而联合索引为次级索引,下边无数据,块儿少,遍历快。

7.总分析,只有t8表(innodb)的按照主键索引排序耗时多,其余还好

时间排序结论:innodb.主索引 > innodb.次索引 > mysiam

效率将近差了27倍,问题处在了哪里?

1.主因,沿着主键做order by排序,查询时会跨页很多块,时间增加

2.如果没有几个长的char字段,数据块也不大,也就不会造成这么大的差别,

比如,删除表中str1,str2,str3字段,查询时间也会大大减少,差异不明显

以上就是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 ''/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''

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’

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

亲,是不是忘记了开MysqL服务,service MysqLd start

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 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 的登录用户名?的相关信息,请在本站寻找。

本文标签: