Mysql的优化配置(Partiontion)索引/ Hypertable的/ RAID配置(庞大的数据库)
TL; RD:Mysql的优化配置(Partiontion)索引/ Hypertable的/ RAID配置(庞大的数据库)
- DB分区与主键
- 指数的大小问题。
- 数据库大小每天增长约1-3 GB
- Raid安装。
- 您有使用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).
从这张表中我可以清除所有需要的数据。
您是否有任何经验Hypertables? http://hypertable.org/ < =谷歌Bigtables。如果我转移到Hypertables,这将有助于我的表现(提取数据/搜索/插入/选择& 数据库大小)。我在网页上阅读,但我仍然有些无知。因为你不能直接比较MYSQL和Hypertables。我会尽快试用,必须先阅读文档。
我需要一个适合我的设置的解决方案,因为我没有钱用于任何其他硬件设置。
感谢您的帮助。
Hypertable是抓取数据库的绝佳选择。 Hypertable是一个开源的,高性能,可扩展的数据库,以Google的Bigtable为蓝本。 Google专门为他们的抓取数据库开发了Bigtable。我建议您阅读Bigtable paper,因为它使用爬网数据库作为运行示例。
关于#4(RAID设置),建议不要将RAID5用于生产服务器。关于它的好文章 - >http://www.dbasquare.com/2012/04/02/should-raid-5-be-used-in-a-mysql-server/
感谢您的回答Doug。你有Hypertables的经验,也知道一些教程,基准等,这些不在http://hypertable.org/或http://code.google.com/p/hypertable/托管所有这些信息两个网站,我已经阅读。此外我GOOGLE了几天,我没有发现任何有用的东西。感谢您的帮助。 – user1015314 2012-02-22 21:03:38
可修改教程: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
我确实有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