Database 数据库性能

Database 数据库性能,database,web-services,performance,Database,Web Services,Performance,假设有一个拥有100000个用户的网站,每个网站都有多达1000个独特的字符串,因此总共最多有100000000个字符串。 最好是有一个表,每个字符串是一条记录以及它的所有者id。这样,您最终会得到一个表,其中包含100000000条记录和两个字段(文本和用户id) 或者有100000个表,每个用户一个表,表的名称是用户的id。然后每个表中有1000条记录,只有一个字段(文本) 或者,不是将字符串存储在数据库中(SMS消息的长度有一个字符限制),而是只存储指向文本文件的链接,其中目录中有1000

假设有一个拥有100000个用户的网站,每个网站都有多达1000个独特的字符串,因此总共最多有100000000个字符串。 最好是有一个表,每个字符串是一条记录以及它的所有者id。这样,您最终会得到一个表,其中包含100000000条记录和两个字段(文本和用户id)

或者有100000个表,每个用户一个表,表的名称是用户的id。然后每个表中有1000条记录,只有一个字段(文本)

或者,不是将字符串存储在数据库中(SMS消息的长度有一个字符限制),而是只存储指向文本文件的链接,其中目录中有100000000个文本文件,每个文件都有一个唯一的名称(随机数和/或字母)并包含一个字符串?(或者每个用户都有一个目录,然后他们的字符串都在该目录中?)

目录和数据库这两个选项中,哪一个是最有效的,然后是其中哪一个子选项是最有效的

(这个问题在我看来显然是理论性的,但像twitter这样的网站做什么呢?)


(我所说的效率是指使用最少的资源和时间)

选项1 存储一个带有用户id和文本的表会更容易。为每个用户创建一个表不会更有效

尽管在实践中,您可能希望使用Mongo分片集群,而不是运行MySQL的单独服务器。

Option#1 存储一个带有用户id和文本的表会更容易。为每个用户创建一个表不会更有效


尽管在实践中,您可能需要一个Mongo分片集群,而不是运行MySQL的单独服务器。

您需要一个表,在用户ID上有索引


为了提高速度,您可以对表进行分区、复制、使用缓存、云、分片等操作,这样您就有了一个表,并且在用户ID上有索引

为了提高速度,您可以对表进行分区、复制、使用缓存、云、分片等

或者有10万张桌子

看在上帝的份上,不!这将导致可怕的代码-这不是数据库的设计目的

您应该有一个包含100000000条记录的表。数据库服务器是为处理大型表而构建的,如果需要,您可以使用索引和分区等来提高性能

或者有10万张桌子

看在上帝的份上,不!这将导致可怕的代码-这不是数据库的设计目的


您应该有一个包含100000000条记录的表。数据库服务器是用来处理大型表的,如果需要的话,可以使用索引和分区等来提高性能。

< P>请考虑NoSQL数据库:

< P>。请考虑NoSQL数据库:< /P> < P>绝对一个表,并根据密钥填写记录。操作系统将以100000个文件名的目录结构进行爬网,以便进行排序。。。目录管理本身会降低性能(从操作系统级别)

肯定是一个表,并根据键填充记录。操作系统将以100000个文件名的目录结构进行爬网,以便进行排序。。。目录管理本身会降低性能(从操作系统级别)

这取决于服务器必须处理的活动量

几个月前,我们建立了一个系统,索引了约2000万篇Medline文章摘要,每个摘要都比你的twitter消息长。 我们把这些东西放在一个约40GB大的lucene索引中。 即使我们的硬件不好(2 GB Ram,没有SSD驱动器,实习生很差),我们也能在几天内对数据库进行300万个词的搜索


一个表或(lucene索引)应该是最好的选择。

这取决于服务器必须处理的活动量

几个月前,我们建立了一个系统,索引了约2000万篇Medline文章摘要,每个摘要都比你的twitter消息长。 我们把这些东西放在一个约40GB大的lucene索引中。 即使我们的硬件不好(2 GB Ram,没有SSD驱动器,实习生很差),我们也能在几天内对数据库进行300万个词的搜索


单表或(lucene索引)应该是最好的选择。

像Twitter这样的网站经常崩溃。资源和时间最少?我想你得选一个。这就是我想要平衡的意思。我会牺牲一些时间来使用更少的资源,反之亦然,这样可以在适当的时间内检索字符串,用户不会等待,但不会因为资源被全部使用而加快等待时间。像Twitter这样的网站经常崩溃。资源和时间最少?我想你得选一个。这就是我想要平衡的意思。我会牺牲一些时间来使用更少的资源,反之亦然,这样可以在适当的时间内检索字符串,用户不会等待,但不会因为资源都已被使用而加快等待时间。很好,因为这也是我所想的,我只是想确定一下。实际上,根据数据的结构和用途,几十个表(当然不是100000个)是合理的。它被称为水平分区,mysql 5.1本机支持它。它将为您处理所有的表引用,因此您可以将其视为一个表。但是使用它有一些严格的条件。很好,因为这也是我所想的,我只是想确定一下。实际上,根据数据的结构和用途,几十个表(当然不是100000个)是合理的。它被称为水平分区,mysql 5.1本机支持它。它将为您处理所有的表引用,因此您可以将其视为一个表。但是使用它有一些严格的条件。