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
答案 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
这两个变量应该始终相同。