我最近读这个问题 源码vs MySQL 并回答指出,源码无法扩展以及与官方网站 排序的确认了这个, 然而.

如何扩展源码是什么是它的最上层的限制?

有帮助吗?

解决方案

昨天,我发布了一个小网站* 跟踪你的代表处,使用一个共享源码数据库为所有游客。不幸的是,即使有适度的负荷,它把我的东道它跑了相当缓慢。这是因为整个数据库是锁着的每次有人查看过的网页,因为它包含了更新/插入。我很快就切换到MySQL虽然我没有太多时间来检验出来,它似乎更可比源码.我只记得缓慢页载荷偶尔得到一个数据库锁上的错误,当试图执行查询,从外壳源码.这就是说,我正在运行的另一个网站,从源码就好了。的区别是,该网站是静态的(即我是唯一一个可以变化的数据库),并使它的工作只是罚款并读。道德的故事:只能使用源码对于网站在更新数据库发生很少(通常少于每页载).

编辑:我只是意识到,我可能不是公正的来源码-我不指数中的任何列源码数据库时,我是从一个网页。这一部分引起的经济放缓,我在经历。然而,观察的数据库锁的代表-如果你有特别繁重的更新源码表现不相匹配MySQL或Postgres。

另一个编辑: 因为我这几乎是3个月前我曾有机会密切审查可扩展性的源码,并有一些技巧也可以是相当可扩展。正如我所提到的在我的第一个编辑、数据库的指数显着减少查询的时间,但是这更多的是一般性的观察有关的数据库,而不是源码.然而,还有另外一个绝招你可以用它来加速源码: 交易.每当你需要做的多个数据库写道,把他们内部事务。而不是书面的(和锁定)的文件每次写信查询时发出,写入将只发生一次交易时完成。

该网站,我说我放在第一段已经被切换回来源码,以及它的运行相当顺利,有一次我调我的代码中的几个地方。

*该网站是不再提供

其他提示

源码是扩展方面的单用户,我有多千兆字节的数据库,执行非常好,我没有太多的问题。

但它 单用户,所以取决于什么样的扩你正在谈论的。

在回应评论。注意,没有什么是防止使用源码数据库在一个多用户环境,但是每个事务(在的效果,每个SQL声明修改数据库)采用一个锁上 文件, 这将防止其他用户访问该数据库 在所有.

所以如果你有很多的修改完成数据库,你基本上是要打缩放问题非常快。如果,另一方面,你有很多的读取相比较,编写访问,它可能不是那么糟糕。

但源码当然会 功能 在一个多用户环境,但它不会 执行 好。

源码驱动sqlite.org 网站和其他有大量的交通。他们建议,如果你有 不到100k 每天,源码应该做工精细。那是之前他们递送的"Writeahead记录"的功能。

如果你要加快速度了源码,做到以下几点:

  • 升级来源码3.7.x
  • 启用 预写记录
  • 运行以下pragma:"PRAGMA cache_size=数量的网页;"默认的大小(人数的页)为2000页的,但是如果你提出这一数字,然后你将会提高的数据量运行直接从存储器。

你可能想看看我的视频在YouTube上被称为"改善性能源码与Writeahead记录"其中显示了如何使用预写记录和证明了5倍的速度改善,写道。

源码是 桌面在进程 数据库。SQL服务器,MySQL,Oracle,和他们的弟兄们 服务器.

桌面上数据库通过其性质不是一个好的选择 任何 应用程序,需要支持并发写访问的数据存储。这包括在一些级别的大多数网站。如果你甚至没有登录于任何东西,你可能需要编写访问的数据库。

你有没有读这个源码文件- http://www.sqlite.org/whentouse.html ?

源码通常会工作的伟大作 数据库引擎用于低至中 交通网站(也就是说, 99.9%的所有网站).量的网页流量源码可以处理 取决于,当然,关于如何严重的 网站使用其数据库。一般 而言,任何站得到更少 比100K命/天应工作的现 与源码.100K命/天图 是一个保守的估计,不是一个硬 上限。源码已 证明工作的10倍 这一数额的交通。

源码的扩展性将高度依赖于使用的数据,其格式。我已经有一些艰难的经验的额外长表(GPS记录、一个记录每秒)。经验表明,源码会减慢的阶段,部分原因是由于不断重新平衡的日益增长的二进制的树木举行的索引(和时间标记的索引,你只是 知道吗 这棵树是会得到重新平衡很多,但至关重要的是要你搜索).因此,在结束在约1GB(非常大概的,我知道),查询变得缓慢,在我的情况。你的里程会有所不同。

有一点要记住,尽管所有的吹牛,源码不是作为数据存仓。有各种不同的使用 不推荐 对于源码.现人的背后源码说它自己:

另一种方式来看待源码是这样的:源码不是用来取代甲骨文。它是用来取代fopen().

这导致的主要论点(不一定量的,对不起,但是定性),源码不是对所有使用,而MySQL可以复盖许多不同的用途,甚至如果不理想。例如,你可以有MySQL存储的火狐饼干(而不是源码),但你会需要这种服务的运行所有的时间。另一方面,你可以有一个事务的网站上运行源码(如许多人这样做),而不是MySQL,但希望有很多的停机时间。

我认为,一个(在数字1)网络服务器服务hunderts的客户出现在后台与一个单一的连接数据库的,不是吗?

因此,没有同时访问数据库中的一种因此,我们可以说,数据库的工作正在单一的用户模式'。这是没有意义的diskuss多用户访问在这样的情况,并因此源码工作以及任何其他serverbased数据库。

它认为这种方式。SQL精简将被锁定每次有人用它(源码不锁上读取)。所以如果你的服务了一个网页或者一个应用程序,有多个并行的用户只有一个可以使用你的应用程序在时间与SQLLite.那么右边有一个比例的问题。如果一个人的应用程序的说音乐图书馆,在那里你持有的数以百计的标题,评级信息、使用、游戏、玩的时间,然后SQL的精简将缩精美的保持数千人,如果不是数以百万计的记录(硬盘驱动器,愿意)

MySQL另一方面适用于应用程序服务器那里的人们都将使用它同时进行。它没有锁,这是相当大的大小。因此,对于你的音乐图书馆MySql将是杀死尽可能只有一个人会看到它,除非这是一个共享音乐图书馆,在那里成千上万增加或更新。然后MYSQL将是一个使用。

因此在理论上MySQL尺度更好,然后Sqllite因为它可以处理多用户使用,但是矫枉过正为一个单一的用户应用程序。

源码网站(本部分引用)表示,它可用于多种多用户的情况。

我会说,这可能处理相当多的。在我的经验一直是非常快。当然,你需要的索引表和编码时反对,你需要确保使用parameritized查询等。基本上相同的东西,你会做任何数据库,以提高性能。

这可能是值得去看看 实SQL服务器, ,这是一个数据库服务器上建源码.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top