MySQL Недостаточно памяти при копировании таблицы Innodb в таблицу памяти - PullRequest
0 голосов
/ 05 февраля 2019

Я получаю эту ошибку при копировании таблицы в таблицу, даже если есть много места (36 ГБ) и памяти (09 ГБ).

insert into time_series_funds_mem select * from time_series_funds;
MySQL said: Documentation
#5 - Out of memory (Needed 260748 bytes) 

Таблица time_series_funds имеет около 16 миллионов строк, иобщий размер ~ 3,2 Гб, механизм хранения InnoDb.И это мой файл my.cnf:

# The following options will be passed to all MySQL clients
[client]
port        = 3300
socket      = "${path}/binaries/mysql/mysql.sock"

# Here follows entries for some specific programs

# The MySQL server
[mysqld]

tmp_table_size=7096M
max_heap_table_size=7096M


# The TCP/IP Port the MySQL Server will listen on
port = 3300

#Path to installation directory. All paths are usually resolved relative to this.
basedir = "${path}/binaries/mysql/"

#Path to the database root
datadir = "${path}/binaries/mysql/data/"

# The default storage engine that will be used when create new tables
default-storage-engine = MYISAM

bind-address    = 127.0.0.1
socket          = "${path}/binaries/mysql/mysql.sock"
log_error       = "${path}/binaries/mysql/data/mysql_error.log"
skip-external-locking
key_buffer_size = 160M
max_allowed_packet = 100M
table_open_cache = 64
net_buffer_length = 8K


skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M


log-bin=mysql-bin

# binary logging format - mixed recommended
binlog_format=mixed
server-id   = 1


innodb_data_home_dir = "${path}/binaries/mysql/data/"
innodb_data_file_path = ibdata1:200M:autoextend
innodb_log_group_home_dir = "${path}/binaries/mysql/data/"
innodb_buffer_pool_size = 3024M
innodb_log_file_size = 512M
innodb_log_buffer_size = 200M
innodb_flush_log_at_trx_commit = 1
#innodb_flush_method = normal

innodb_lock_wait_timeout = 50

innodb_write_io_threads = 16
[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer_size = 5000M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Это структура таблицы:

CREATE TABLE `time_series_funds_mem` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `tickerid` int(10) unsigned NOT NULL,
 `ticker` varchar(6) COLLATE utf32_bin DEFAULT NULL,
 `fund_ticker` varchar(8) COLLATE utf32_bin NOT NULL,
 `date` date DEFAULT NULL,
 `open` decimal(13,4) unsigned DEFAULT NULL,
 `high` decimal(13,4) unsigned DEFAULT NULL,
 `low` decimal(13,4) unsigned DEFAULT NULL,
 `close` decimal(13,4) unsigned DEFAULT NULL,
 `adjusted_close` decimal(13,4) unsigned DEFAULT NULL,
 `volume` bigint(20) unsigned DEFAULT NULL,
 `dividend_amount` decimal(13,4) unsigned DEFAULT NULL,
 `split_coefficient` decimal(13,4) unsigned DEFAULT NULL,
 `return_perc` decimal(13,4) DEFAULT NULL,
 `has_return_perc` bit(1) NOT NULL DEFAULT b'0',
 `has_return_calc` bit(1) NOT NULL DEFAULT b'0',
 `return_YTD` decimal(13,6) NOT NULL,
 `return_1Y` decimal(13,6) NOT NULL,
 `return_3Y` decimal(13,6) NOT NULL,
 `return_5Y` decimal(13,6) NOT NULL,
 `return_all` decimal(13,6) NOT NULL,
 `var_95` decimal(13,6) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `tickerid` (`tickerid`),
 KEY `ticker` (`ticker`)
) ENGINE=MEMORY DEFAULT CHARSET=utf32 COLLATE=utf32_bi

Это файл, который я пытаюсь импортировать: http://167.99.242.73/funds.tar.gz.

...