如何在OSX上使用MonetDB提高性能?

时间:2015-07-22 00:51:24

标签: macos monetdb

我在带有OSX 10.10.4 Yosemite的16GB Macbook Pro上使用monetdb。

我使用SQLWorkbenchJ执行查询(配置至少2048M RAM)。

我发现整体表现不稳定:

  • 小尺寸表(<100K行)
  • 的性能可接受/良好
  • 对于包含许多行的表来说很糟糕:一个连接两个表(8670行和242K行)的查询和一个简单的总和需要1H 20m !!

尽管我的内存为16GB,但在一次运行中我从未看到MSERVER5使用超过35MB的RAM,而另一次使用的是450MB。另一方面,时间消耗在磁盘上交换数据(根据活动监视器超过160GB的数据!)。

我希望更好地理解一些与性能相关的问题:

  • 我的印象是MonetDB很难理解OSX中可用的RAM数量。我怎样才能强迫&#34; MonetDB使用更多内存?
  • 我通过R使用MonetDB.MonetDB.R驱动程序将所有字符字段转换为CLOB。我想知道CLOB是否会产生内存分配问题?
  • 即使对于索引创建或临时结果,我发现很难解释许多GB的写入(如提到的> 150GB !!)。另一方面,当我创建数据库并整体加载表时,数据库<50MB。我应该创建一个人工整数键并将其设置为index吗?
  • 我在时间戳字段上加入2个表(例如&#34; 2015/01/01 01:00&#34;),再次被MonetDb / MonetDb.R视为文本CLOB。在将其保存到MonetDb之前,我应该将其转换为整数吗?
  • 我使用integer类型的字段为每个表配置了一个主键。 MonetDB(作为典型的列式数据库)不需要用户指定索引。还有其他方法可以提高性能吗?

欢迎任何建议。

为清楚起见,我加入的两个表格具有以下布局:

Calendar # classic calendar table with one entry per our in a year = 8760 rows
Fields: datetime, date, month, weekbyhour, monthbyday, yearbyweek, yearbymonth # all fields are CLOBs as mentioned

Activity # around 200K rows
Fields: company, department, subdepartment, function, subfunction, activityname, activityunits, datetime, duration # all CLOBs except activityunits; datetime refers to when the activity has occurred

I have tied various types of join syntax, but an example would (`*` used for brevity)
select * from Activity as a, Calendar as b where a.datetime=b.datetime

0 个答案:

没有答案