MySQL数据库在什么时候开始失去性能?
我有一个我认为是一个大型数据库,大约有15M的记录,占用了近2GB.基于这些数字,我是否有动力清理数据,或者我是否可以安全地继续扩展数年?
我需要能够为数十亿条记录存储少量数据(大约50-75字节)(一年约30亿/月).
唯一的要求是对具有相同GUID的所有记录进行快速插入和快速查找,并且能够从.net访问数据存储.
我是一个SQL服务器人,我认为SQL Server 可以做到这一点,但随着所有关于BigTable,CouchDB和其他nosql解决方案的讨论,它听起来越来越像传统RDBS的替代品可能是最好的,因为优化分布式查询和扩展.我尝试了cassandra,.net库目前没有编译或者都可以更改(以及cassandra本身).
我已经研究了许多可用的nosql数据存储,但找不到满足我作为强大的生产就绪平台的需求.
如果你必须存储360亿个小而扁平的记录,以便它们可以从.net访问,那会选择什么以及为什么?
因此,MySQL中使用InnoDB存储引擎的一个表将包含数十亿行(可能没有限制插入的数量).
你能告诉我我能做些什么样的优化来帮助加快速度吗?因为已有几百万行,它将开始变慢.
当然,如果你建议使用别的东西.我唯一的选择是PostgreSQL和Sqlite3.但我被告知sqlite3不是一个好选择.至于postgresql,我完全不知道它是怎么回事,因为我从来没有用过它.
我想,在该表中每秒至少大约1000-1500次插入.
我有一个场景,其中有大量关于项目的状态数据.该项目的状态从分钟更新到分钟,并且在不久的将来将有大约50,000个项目.因此,在一个月内,将有大约2,232,000,000行数据.在获得旧数据之前,我必须在主表中保留至少3个月.
我必须计划根据特定项目(其ID)和数据范围(通常最多一个月的范围)实现快速查询 - 例如,从Table中选择A,B,C,其中ItemID = 3000,日期介于'2010-之间10-01'和'2010-10-31 23:59:59.999'
所以我的问题是如何设计一个分区结构来实现这一目标?
目前,我基于"项目的唯一标识符"(一个int)mod"分区数"进行分区,以便所有分区均匀分布.但它的缺点是在表上保留一个额外的列作为分区函数的分区列,因此,将行映射到其分区.所有这些都增加了一些额外的存储空间.此外,每个分区都映射到不同的文件组.
我有一个网站,用户可以在其中对帖子发表评论或回复评论。用户还可以对回复或评论点赞。然而,回复表中还有另一个名为reply_to 的字段。这是我当前的架构:
Comment
id
user (foreign key)
post (foreign key)
comment
Reply
id
user (foreign key)
reply_to (who the user is replying to)
comment (foreign key)
reply
CommentLike (Table that shows which user liked which comments)
id
comment (foreign key)
user (foreign key)
like (1 = likes, 0 = dislikes)
ReplyLike (Table that shows which user liked which replies)
id
reply (foreign key)
user (foreign key)
like (1 = likes, 0 = dislikes)
Run Code Online (Sandbox Code Playgroud)
这看起来是一个很好使用的模式,还是有更好的方法来创建这种结构?