2012-02-20 62 views
2

TL; RD:Mysql的优化配置(Partiontion)索引/ Hypertable的/ RAID配置(庞大的数据库)

  1. DB分区与主键
  2. 指数的大小问题。
  3. 数据库大小每天增长约1-3 GB
  4. Raid安装。
  5. 您有使用Hypertable的经验吗?

长的版本:

我刚建/买了一台家庭服务器:

  • 至强E3-1245 3,4 HT
  • 32GB RAM
  • 6X 1.5 TB WD Cavier Black 7200

我将使用服务器主板IN电话S1200BTL突袭(没有钱留给RAID控制器)。 http://ark.intel.com/products/53557/Intel-Server-Board-S1200BTL

主板有4倍个SATA 3Gb/s接口和2个SATA 6Gb/s的

我还没有确定是否可以安装在RAID 10的所有6hdds,

如果没有可能,我想(OS/Mysql索引)的4x hdds Raid 10(MYSQL DB)& 2xhdds Raid 0。

(如RAID 0将其对我来说没有任何问题,我只需要确保DB)

关于DB:

它是一种网络爬虫DB,其中域名,网址,链接,这些东西被存储。 所以我想我分区DB主键的每个表如 (1-1000000)(1000001-2000000)等。

当我做搜索/ DB中的插入/ select查询,我需要扫描孔表,引起了一些东西可能是第1行中,另一个在ROW 1000000000000.

,如果我做的这种分区主键(auto_increment)会使用我所有的CPU核心?这样它就可以扫描每个分区并行?或者我应该坚持一个巨大的数据库没有分区。

数据库将是非常大的,对我的家庭系统,现在它的,

Table extract: 25,034,072 Rows 
Data 2,058.7  MiB 
Index 2,682.8  MiB 
Total 4,741.5  MiB 

Table Structure: 
extract_id   bigint(20)  unsigned  NO PRI  NULL auto_increment 
url_id  bigint(20)   NO  MUL  NULL  
extern_link  varchar(2083)   NO  MUL  NULL  
anchor_text  varchar(500)   NO  NULL  
http_status  smallint(2)  unsigned NO  0 

Indexes: 
PRIMARY  BTREE Yes No extract_id  25034072 

link  BTREE Yes No url_id 
          extern_link (400) 25034072 

externlink  BTREE No No extern_link (400) 1788148 


Table urls: 21,889,542 Rows 
Data 2,402.3  MiB 
Index 3,456.2  MiB 
Total 5,858.4  MiB 

Table Structure: 
url_id  bigint(20)  NO PRI  NULL auto_increment 
domain_id   bigint(20)  NO MUL  NULL  
url    varchar(2083)  NO  NULL  
added  date NO  NULL  
last_crawl  date NO  NULL  
extracted   tinyint(2) unsigned NO MUL  0 
extern_links smallint(5) unsigned NO  0 
crawl_status tinyint(11) unsigned NO  0 
status  smallint(2) unsigned NO  0 


INDEXES: 
PRIMARY  BTREE Yes No url_id  21889542 

domain_id  BTREE Yes No domain_id 0 
         url (330) 21889542 

extracted_status BTREE No No extracted 2 
         status  31 

我看我可以修复externlink &链接索引,我只是说externlink原因,我需要查询该字段,我无法使用链接索引。你看,我可以调整索引吗?我的新系统将有32 GB,但如果数据库以这种速度增长,我将在几周/月内使用90%的RAM。

请问包装INDEX有帮助吗? (性能如何下降?)

其他重要表格低于500MB。

Only the URL Source table is huge: 48.6 GiB 
Structure: 

    url_id BIGINT 
    pagesource mediumblob data is packed with gzip high compression 

    Index is only on url_id (unique). 

从这张表中我可以清除所有需要的数据。

您是否有任何经验Hypertableshttp://hypertable.org/ < =谷歌Bigtables。如果我转移到Hypertables,这将有助于我的表现(提取数据/搜索/插入/选择& 数据库大小)。我在网页上阅读,但我仍然有些无知。因为你不能直接比较MYSQL和Hypertables。我会尽快试用,必须先阅读文档。

我需要一个适合我的设置的解决方案,因为我没有钱用于任何其他硬件设置。

感谢您的帮助。

回答

0

Hypertable是抓取数据库的绝佳选择。 Hypertable是一个开源的,高性能,可扩展的数据库,以Google的Bigtable为蓝本。 Google专门为他们的抓取数据库开发了Bigtable。我建议您阅读Bigtable paper,因为它使用爬网数据库作为运行示例。

+0

感谢您的回答Doug。你有Hypertables的经验,也知道一些教程,基准等,这些不在http://hypertable.org/或http://code.google.com/p/hypertable/托管所有这些信息两个网站,我已经阅读。此外我GOOGLE了几天,我没有发现任何有用的东西。感谢您的帮助。 – user1015314 2012-02-22 21:03:38

+0

可修改教程:http://code.google.com/p/hypertable/wiki/HQLTutorial这里有一个最近的基准:http://highscalability.com/blog/2012/2/7/hypertable-routs-hbase-在性能测试 - HBase的-overwhelmed.html。源码包也包含很多示例代码。 – cruppstahl 2012-02-23 05:13:15

+0

我确实有Hypertable的经验。我写了大部分内容。 :)要做的最好的事情是首先按照独立安装说明安装它:[链接](http://www.hypertable.com/documentation/installation/quick_start_standalone/)。完成之后,请阅读HQL教程:[链接](http://www.hypertable.com/documentation/developer_guide/)。我还建议阅读概述和体系结构文档:[链接](http://www.hypertable.com/documentation/)。您也可以在文档部分找到代码示例。我们正在离开code.google.com。 – 2012-02-23 18:02:22