最好的C语言键/值数据库大量的条目

我正在尝试创建一个键/值数据库,其中每个具有300万个键/值对,每个字节为8个字节(用于键值和值).要求是具有非常快的键/值机制,每秒可以查询约500,000个条目.

我尝试BDB,东京DB,京都DB和levelDB,而且对于那个大小的数据库,它们都表现得非常糟糕. (他们的表现甚至接近于1,000,000个条目的基准利率).

由于硬件限制(32位软件),我无法将数据库存储在内存中,因此memcached不成问题.

我也不能使用外部服务器软件(仅一个数据库模块),并且根本不需要多用户支持.当然,无论如何,服务器软件每秒不能拥有每秒500,000个查询,因此可以省去Redis,Tokyo tyrant等.

解决方法

大卫Segleau,在这里. Berkeley DB的产品经理.

BDB性能最常见的问题是人们不配置缓存大小,认为认大小,相当小.第二个最常见的问题是,人们编写执行随机查找的应用程序行为模拟器(即使它们的应用程序不是完全随机的),这迫使他们从缓存中读取数据.然后,随机I / O将它们归结为关于不是基于模拟应用程序而不是实际应用程序行为的性能结论路径.

从你的描述,我不知道你是否遇到这些常见的问题,或者也许完全是其他的东西.在任何情况下,我们的经验是,伯克利数据库往往表现和规模很好.我们很乐意帮助您识别任何瓶颈,并提高您的BDB应用程序吞吐量.在这方面获得帮助的最佳地点是BDB论坛:http://forums.oracle.com/forums/forum.jspa?forumID=271.当您发布到论坛时,显示应用程序代码的关键查询段和显示数据库环境性能的db_stat输出将是非常有用的.

您可能希望使用BDB HA / Replication来跨多个服务器负载平衡查询. 500K查询/秒可能需要更大的多核服务器或一系列较小的复制服务器.我们经常在商品硬件上看到100-200K查询/秒的BDB应用程序,但32位应用程序中300M记录的每秒500K查询可能需要仔细调整.我建议专注于在单个节点上运行的BDB应用程序上查询性能优化,然后使用HA在多个系统之间分配该负载,以扩大查询/第二个吞吐量.

我希望有帮助.

祝你运气顺利.

问候,

戴夫

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...