MySQL存储引擎的决定

时间:2009-11-10 09:27:20

标签: mysql caching innodb myisam

我是荷兰的网页设计师。我从头开始构建Web应用程序,我总是使用CMS,并对其进行自定义。

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

我有一些问题一直困扰着我一段时间:


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

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

我知道不是我的数据库中的所有表都会被访问,这些只是3.它们目前都是myIsam。这个好吗?我应该改变它们吗?没有改变?我真的不知道该怎么办。 我是否会改变它们,这会对我的网站产生巨大影响。并且这些变化很容易适用,或者很难做到。


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

我也读了一些关于它们但我不知道它们是否适用于我所拥有的那种网站。我从数据库中获取的数据发生了很大变化。缓存它们对我来说很方便吗? 例如,可以缓存拍卖,因为并非所有项目都会更改。但拍卖会不会永远存在,经过几个小时它就不见了。

我无法看到缓存系统如何应用于此,或者我看到错误的方式。而且,如果这个系统适用于我,这种改变是否需要付出很多努力,而且这种努力会带来巨大的变化。


这些都是我的问题,我猜它们非常普遍,我希望有些人可以帮助我,我真的很感激。

此致

2 个答案:

答案 0 :(得分:7)

<强> InnoDB的

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

  1. 行级锁定
  2. 多语句交易
  3. 回滚
  4. <强>缓存

    你有几种方法可以进行缓存。但是说你的头版每秒有10次点击并且每五分钟就会改变一次。将首页存储在一个纯html文件中并且每隔五分钟就有一个cron-job更新页面,这是非常有意义的。

答案 1 :(得分:6)

  

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

通常用于任何默认为InnoDB 的任务,用于其ACID合规性和行级锁定。考虑仅针对(a)全文搜索以及(b)InnoDB下的性能不够好的特定情况(这种情况非常罕见,但是某些类型的数据可以从MyISAM的配置文件中受益)来使用MyISAM。

  

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

像拍卖这样的功能真的需要一个一致的交易数据库,因为你在谈论人们的钱。 MyISAM无法提供。您的站点需要使用事务进行所有非原子交互,因此例如,它是不可能的。两个人在同一时间竞标时赢得同样的拍卖。

  

它必须处理几个读取和写入每一个!!

这不是一个巨大的数额。但是,由于MyISAM不幸的表级锁定,InnoDB在写入大型表时通常表现更好。

  

我也读了一些关于它们但我不知道它们是否适用于我所拥有的网站。

不要急于进去。一些网络作者似乎认为任何网站都需要使用memcache来获得不错的性能,但实际情况并非如此。您应用的任何缓存解决方案都会增加复杂性和潜在的失败点,以处理更新时间和现在过时的信息。

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

在一个只进行“几次”操作的网站上,你不会需要它。