我有一张这样的桌子:
create table stream_last
(
symbol_id integer,
high decimal(8,2),
low decimal(8,2),
last decimal(8,2),
volume integer,
last_updated datetime,
INDEX USING BTREE(symbol_id)
) ENGINE=MEMORY;
我需要每 5 秒执行大约 4,000 次插入(由读取流并聚合到 symbol_id 的 C 程序进行爆破)。但是,我可以先对数据进行排序,然后按 symbol_id ASCENDING 顺序插入。这会让批量插入更快吗?
第二个问题是,BTREE 是索引的最佳选择吗?从文档中,我可以使用 HASH 但不确定哪个最好......
Don
您认为您提出的优化不会带来任何显着差异,但此处列出了建议
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html
肯定可以帮助您更好地了解您的需求。
这句话可能有道理
表的大小使索引的插入减慢了log N,
假设 B 树索引。
您可以使用以下方法来加快插入速度:
如果您同时从同一客户端插入多行,
使用具有多个 VALUES 列表的 INSERT 语句来插入多个
一次行。这要快得多(在某些情况下要快很多倍)
例)而不是使用单独的单行 INSERT 语句。如果你是
将数据添加到非空表中,您可以调整
bulk_insert_buffer_size 变量使数据插入速度更快。
请参见第 5.1.3 节“服务器系统变量”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)