zoukankan      html  css  js  c++  java
  • select大表报错

    MySQL查询大表报错

    MySQL执行select操作时候,如果执行查询的表的数据量比较大,就会报错error code 2013。或者报错已杀死,并直接退出MySQL客户端。如下所示:

    mysql> select * from test;
    /usr/local/mysql/bin/mysqld_safe: line 198:  4535 Killed                  nohup /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/tmp/error.log --pid-file=/data/3306/data//mysql.pid --socket=/data/3306/mysql.sock --port=3306 < /dev/null > /dev/null 2>&1
    ERROR 2013 (HY000): Lost connection to MySQL server during query

    MySQL的错误日志如下:

    2019-01-23T20:17:00.305460Z 4 [Note] Aborted connection 4 to db: 'test' user: 'root' host: 'localhost' (Got an error writing communication packets)

    linux的系统日志如下 cat /var/log/messages:

    mysql kernel: Out of memory: Kill process 5453 (mysql) score 545 or sacrifice child
    mysql kernel: Killed process 5453, UID 0, (mysql) total-vm:2117292kB, anon-rss:1947792kB, file-rss:52kB

    这个问题的主要原因是:服务器内存不足,服务器是Linux的,由于内存不足,mysql服务就被kill掉了,因为Linux服务器在检测到一个占内存的服务,而内存又不够用的情况下,就把那个服务给干掉,这就是Linux常见的OOM killer(Out Of Memory killer)机制。

    解决方法:

    1、更换大内存的服务器

    2、客户端使用分页查询,使用limit控制查询数量

  • 相关阅读:
    C# FromBase64String 解码换行问题
    Func与Action
    C# 委托及各种写法
    DNS解析过程和域名收敛、域名发散、SPDY应用
    基础数据类型长度
    C#静态常量和动态常量的区别
    dynamic和var的区别
    ADO.NET中的五个主要对象
    Linux 守护进程创建原理及简易方法
    利用/dev/urandom文件创建随机数
  • 原文地址:https://www.cnblogs.com/jkin/p/10314695.html
Copyright © 2011-2022 走看看