我被困在一块岩石和一个硬的地方,正在制作一个应用程序。基本上,该程序会生成一个非常大的数据集(它超过10个演出并超过服务器上的内存,并且很难在稍后将该数据集从字典传送到其他服务器)。我决定使用数据库来存储数据,但遇到了一个问题,在我产生更多进程时,他们不会使用超过10%的可用内核,但mysql服务总是在60-100%左右。有没有办法让mysql处理大量的并发写入?
使用mysql的核心运行在60-100%之间。我已经学习了基本的mysql课程,但绝不是专家,我真的只是用它来存储/分发程序的局部变量。有关如何排除故障或甚至解决此问题的任何建议?我的一个想法是尽管我的内存不能存储我打算编写的整个数据库,但我希望服务器使用一些内存来处理一些请求,然后可能会在内存变满时编写它们(现在,mysql正在使用小于1服务器内存的百分比)。
正如你所知道的我的目标,我没有忠于任何特定类型的系统,所以如果mysql不是一个好的解决方案,我很乐意尝试另一种工具(我打算使用hbase,但沿着mysql的道路第一)。如果还有什么更好的,请告诉我。
我生成8个过程,所以我认为8写一秒。该表目前只有一列(它必须是唯一的)。它没有索引(认为有助于读取不写,所以没有做任何事情)。它真的有两个操作,它是一个读取,如果它不存在写入数据库。版本是5.1.61。我不确定配置,它是默认的centos 6,我使用Innodb。当我查看锁定的过程时,有11行结果,其中2个未锁定(一个是检查权限,另一个是写入网络)。 – Lostsoul 2012-02-20 08:13:52
我应该添加,该应用程序运行在与数据库相同的服务器上。如果需要,我可以移动。服务器有8个内核,但SQL最多只有1个,而且应用程序占用的内存少于10%,所以每个内核对于MySQL而言都有90个。 – Lostsoul 2012-02-20 08:34:24
这对于音量而言确实不算什么--MySQL可以在简单的笔记本电脑上处理它的睡眠。没有索引不是一件好事,尤其是如果你在写入之前进行读取 - 没有该索引,mysql将为每个插入(在该扫描期间具有关联的锁)执行完整的表扫描 - 对于大数据集每秒x6可以真正咀嚼你的过程。我会建议在首先搜索的字段中添加索引,看看是否有助于减少争用。 – AlexGad 2012-02-20 15:12:36