内存不足MySql

时间:2017-11-21 20:14:35

标签: mysql

Mysql返回错误" 内存不足"执行简单查询时

SELECT * from users WHERE login LIKE "%son";

表有大约500mil行和2列

服务器总数 RAM 64G 从我所读到的,它主要是因为使用ram的其他应用程序,不是这里的情况,40G~ram是专用于mysql

这是my.ini配置 (我试过搞乱它,但我想我只是让它变得更糟) - 谢谢。

[mysqld]

port=3306
datadir=C:/ProgramData/MySQL2/MySQL Server 5.7\Data

character-set-server=utf8

default-storage-engine=INNODB

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

log-output=FILE
general-log=0
general_log_file="DESKTOP-0E18H6E.log"
slow-query-log=1
slow_query_log_file="DESKTOP-0E18H6E-slow.log"
long_query_time=10

log-error="DESKTOP-0E18H6E.err"

server-id=1

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"

max_connections=300
query_cache_size=1000000

table_open_cache=2000

tmp_table_size=429M

thread_cache_size=10

myisam_max_sort_file_size=100G

myisam_sort_buffer_size=844M

key_buffer_size=8M

read_buffer_size=64K
read_rnd_buffer_size=256K

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=1M

innodb_buffer_pool_size=8G

innodb_log_file_size=48M

innodb_thread_concurrency=8

innodb_autoextend_increment=64

innodb_buffer_pool_instances=8

innodb_concurrency_tickets=5000


innodb_old_blocks_time=1000

innodb_open_files=300 

innodb_stats_on_metadata=0

innodb_file_per_table=1

innodb_checksum_algorithm=0


back_log=80


flush_time=0

join_buffer_size=256K

max_allowed_packet=32M    

max_connect_errors=100

open_files_limit=4161

query_cache_type=0

sort_buffer_size=256K  
table_definition_cache=1400

binlog_row_event_max_size=8K    

sync_master_info=10000

sync_relay_log=10000

sync_relay_log_info=10000

plugin_load="mysqlx"

loose_mysqlx_port=33060

1 个答案:

答案 0 :(得分:1)

您的服务器有64G(用于超过MySQL目的),所以要求

myisam_max_sort_file_size=100G 

可能会导致OOM。如果没有RAM,则无法启用更多RAM。 请试试6G并监听。 ~10%的可用RAM

添加到您的my.cnf / ini

max_heap_table_size=429M # to be same as tmp_table_size 

这两个变量应该始终相同。