Mysql打开文件引起的一个奇怪问题

时间:2021-09-25 00:28:43

    今天遇到一个奇怪的问题,后来发现和mysql打开文件有关。

遇到的奇怪问题

    我在159机器上安装了mysql,在159机器上连接mysql执行sql的速度是0.9s左右。
   但是我从186机器上连接159机器上的mysql执行,时间为5s多。 很是奇怪.(每次测试前我都是重启数据库、清理linux缓存

   如果是第二次查询,不管存本地159机器还是非本地的186机器,都是0.3s返回结果。
   数据库版本是5.5.41-tokudb-7.5.5。

 下面是非本地186机器上第一次的查询(查询前重启数据库,清理操作系统缓存):

  Mysql打开文件引起的一个奇怪问题

下面是本地159机器的第一次查询(查询前重启数据库,清理操作系统缓存):

Mysql打开文件引起的一个奇怪问题


找到原因

    实验一

       1、先重启159机器上的mysql,并查看mysql打开文件数(目前为72个)

        Mysql打开文件引起的一个奇怪问题

     2、在189机器上连接159mysql并执行表上查询(这里话费了4.39s

     Mysql打开文件引起的一个奇怪问题

    3、查看159机器上mysql的打开文件数

   Mysql打开文件引起的一个奇怪问题

   4、再次执行上面的需要5s多的SQL

   Mysql打开文件引起的一个奇怪问题

  说明:从上面的实验看出,时间主要消耗在打开文件上。

   那本地连接后,为啥查询只需要0.9s呢?  继续实验看看

实验二

    1、重启159机器 mysql,查看mysql打开文件数

    Mysql打开文件引起的一个奇怪问题

    2、本地连接mysql(本地第一次连接mysql时比较慢)

    Mysql打开文件引起的一个奇怪问题

  3、查看159机器mysql打开文件数

  Mysql打开文件引起的一个奇怪问题

  说明:从这个实验可以看出,mysql在本地连接时直接打开了文件。

        我自己还做了实验,是这样的,如果你本地直接连接mysql的某个db,他就打开那个db下的所有文件,其他db下的文件不会打开。

实验三

    1、重启159机器mysql,并查看mysql打开文件数

     Mysql打开文件引起的一个奇怪问题

   2、从186机器上,连接159机器上的mysql下的pvd1库

   Mysql打开文件引起的一个奇怪问题

  3、查看159机器上的mysql打开的文件数

 Mysql打开文件引起的一个奇怪问题

说明:这个pvd1下相关的文件数有几百个,这个只多了一个。可以说明远程连接时没有去打开连接db下的所有文件。