3

我是来自荷兰的网页设计师。我对从头开始构建 Web 应用程序有点陌生,我一直使用 CMS,并对其进行了定制。

我正在用 php/mysql 建立一个拍卖网站,已经完成。最近我读了几篇关于存储引擎的文章。

我有几个问题困扰了我一段时间:


哪种存储引擎最适合我的网站,我使用 myIsam、innodb 等吗?

我正在建立的网站是一个拍卖网站,它必须每秒钟处理几次读写!它必须检查拍卖是否开放、关闭、暂停、当前价格等。

我知道并不是我的数据库中的所有表都会被访问,这些只有 3 个。它们目前都是 myIsam。这个好吗?我应该全部改变吗?一个都不改?我真的不知道该怎么办。如果我改变它们,这会极大地影响我的网站吗?这些变化最终会很容易应用,还是很难做到。


我的另一个问题是关于缓存系统。

我也阅读了一些关于它们的信息,但我不知道它们是否适用于我拥有的那种网站。我从数据库中得到的数据变化很大。我缓存它们方便吗?例如,可以缓存拍卖,因为并非所有项目都会更改。但拍卖不会永远存在,几个小时后它就消失了。

我看不出缓存系统如何适用于此,或者我看错了。再说一次,如果这个系统适用于我,这种改变会不会需要很大的努力,这种努力会不会产生巨大的改变。


这些都是我的问题,我想它们真的很笼统,我希望有人能帮助我,我真的很感激。

问候

4

2 回答 2

6

InnoDB

在您所描述的场景中,我会毫不犹豫地选择 InnoDB。看看你可能需要的这些:

  1. 行级锁定
  2. 多语句交易
  3. 回滚

缓存

你有几种方法来做缓存。但是假设您的首页每秒获得 10 次点击,并且每五分钟更改一次。将首页存储在纯 html 文件中并让 cron-job 每五分钟更新一次该页面是非常有意义的。

于 2009-11-10T09:37:06.973 回答
6

哪种存储引擎最适合我的网站,我使用 myIsam、innodb 等吗?

一般来说,任何任务都默认使用 InnoDB,因为它符合 ACID 和行级锁定。考虑仅在 (a) 全文搜索和 (b) InnoDB 下性能不够好的特定情况下使用 MyISAM(这很重要,但某些类型的数据可以从 MyISAM 的配置文件中受益)。

我正在建设的网站是一个拍卖网站,

像拍卖这样的功能确实需要一个一致的交易数据库,因为你在谈论人们的钱。MyISAM 无法提供。您的站点需要对所有非原子交互使用事务,因此例如不可能。两个人在完全相同的时间出价时赢得相同的拍卖。

它必须每秒钟处理几次读写!

这不是一个巨大的数额。然而,由于 MyISAM 不幸的表级锁定,InnoDB 通常在对大表的偏写访问方面表现更好。

我也阅读了一些关于它们的信息,但我不知道它们是否适用于我拥有的那种网站。

不要着急。一些网络作者似乎认为任何网站都需要 memcache 才能获得良好的性能,但事实并非如此。您应用的任何缓存解决方案都会增加复杂性和潜在的故障点,以处理更新时间和现已过时的信息。

所以在你真正需要之前不要使用缓存。如果您的常见前端页面习惯性地对数据集执行复杂、缓慢的查询,那么可以,为此拥有某种缓存,无论是在数据库本身还是像 memcache 这样的外部解决方案,都可以提高速度。但实际上,与增加缓存的复杂性和不一致性相比,您可能最好更改架构并添加索引以使查询更便宜。

而在一个每秒只执行“几次”操作的网站上,您将不需要它。

于 2009-11-10T10:22:55.013 回答