gpt4 book ai didi

mysql - 最佳 Mysql 配置(分区)和索引/Hypertable/RAID 配置(大数据库)

转载 作者:行者123 更新时间:2023-11-29 03:43:52 31 4
gpt4 key购买 nike

tl;rd:

  1. 使用主键对数据库进行分区
  2. 索引大小问题。
  3. 数据库大小每天增长约 1-3 GB
  4. 突袭设置。
  5. 您有使用 Hypertable 的经验吗?

长版:

我刚刚建立/购买了一个家庭服务器:

  • 至强 E3-1245 3,4 HT
  • 32GB 内存
  • 6 个 1.5 TB WD Cavier Black 7200

我将使用服务器主板 INTEL S1200BTL Raid(没钱买 raid Controller )。 http://ark.intel.com/products/53557/Intel-Server-Board-S1200BTL

主板有4个SATA 3GB/s接口(interface)和2个SATA 6GB/s接口(interface)

我还不确定我是否可以在 RAID 10 中设置所有 6 个硬盘,

如果不可能,我认为 4x hdds Raid 10 (MYSQL DB) & 2xhdds Raid 0 for (OS/Mysql Indexes)。

(如果 raid 0 中断,对我来说没问题,我只需要保护数据库)

关于数据库:

它是一个网络爬虫数据库,其中存储域、URL、链接和诸如此类的东西。所以我想我用每个表的主键分区数据库(1-1000000) (1000001-2000000) 等等。

当我在数据库中搜索/插入/选择查询时,我需要扫描 hole 表,因为一些东西可能在 ROW 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。

压缩索引有帮助吗? (性能下降如何?)

其他重要的表都在 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/ <= Googles Bigtables。如果我转向 Hypertables,这是否有助于提高性能(提取数据/搜索/插入/选择和数据库大小)。我在页面上阅读,但我仍然有些无能为力。因为你不能直接比较 MYSQL 和 Hypertables。我会尽快试用,必须先阅读文档。

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

感谢您的帮助。

最佳答案

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

关于mysql - 最佳 Mysql 配置(分区)和索引/Hypertable/RAID 配置(大数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369689/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com