我有一张这样的桌子
CREATE TABLE IF NOT EXISTS `dnddata` (
`numbers` varchar(10) NOT NULL,
`opstype` char(1) NOT NULL,
PRIMARY KEY (`numbers`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (numbers)
PARTITIONS 25 */;
Run Code Online (Sandbox Code Playgroud)
我必须插入 3 亿条记录。我每次使用load data in file
csv 文件插入 1000 万条记录。
第一次插入 1000 万条记录需要近 5 分钟。时间每一次都在逐渐增加。在 3000 万条记录后,它停止插入并且内存使用 100% 服务器没有响应。
在我的my.cnf
文件设置下方
bulk_insert_buffer_size = 100M
key_buffer = 100M
sort_buffer_size = 50M
read_buffer = 50M
Run Code Online (Sandbox Code Playgroud)
我正在使用具有 2 G 内存的 CPU。
3000 万条记录的详细信息
Space usage
Type Usage
Data 545.3 MiB …
Run Code Online (Sandbox Code Playgroud) 我有一个需要很长时间的删除查询。当我办理登机手续时,processlist
该状态显示为“正在关闭的桌子”。关闭桌子需要很长时间。
示例:
我运行一个查询,总时间为1:42秒,其中80-90秒用于关闭表。
这发生在所有查询中,例如load data
,select
和insert
。
以下是my.cnf设置:
key_buffer_size = 2G
sort_buffer_size = 8M
read_buffer_size = 10M
read_rnd_buffer_size = 10M
join_buffer_size = 2M
bulk_insert_buffer_size = 100M
myisam_sort_buffer_size = 64M
#tmp_table_size = 100M
#max_heap_table_size = 64M
#max_allowed_packet = 64M
table_cache=1024
Run Code Online (Sandbox Code Playgroud)
我的记忆信息
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7862 6686 1175 0 11 4091
-/+ buffers/cache: 2583 5278
Swap: 15998 18 15980
Run Code Online (Sandbox Code Playgroud)
请告诉我需要在 …