论坛首页 编程语言技术论坛

Django的多数据库处理(垂直分库和水平分库)

浏览 19534 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-11-06  
magician 写道
我有一个mysql表,目前接近4000万行记录,使用了partition,目前没有任何问题

以前数据量1000万的时候还没有做分区,也没有感到任何性能问题,就是维护一次时间长点

我的业务有高峰期大并发插入,和全天较长时间大并发查询,这张大表一次都没崩溃过

我实在搞不懂为什么那么多人说mysql的表上了百万就不行了。我使用的是myisam,如果机器内存够大,使用innodb性能在理论上应该更高。

---------------------------------------------------------------

就Python在应用级实现的水平或者垂直分库而言,我只看过SQLAlchemy的实现。给我的感觉就是,不到万不得已,不要用应用级的数据分区,因为性能太低。

在数据库分区如此成熟的情况下(mysql/postgresql目前bug已经非常少了,oracle/db2就不提了),没有道理要在应用级做这个事情

就算一定要做,也有现成的,pylons是指接用SQL Alchemy和SQL Object,这两个都号称支持水平/垂直分区,可以尝试。Dangjo也可以delegate到SQL Alchemy上来,无非是愿意或者不愿意的问题。


刚刚看到对这个问题的讨论,希望还有人可以关注。

你已经使用了partition,这个是MySQL 5.1才新增的功能,我目前还没有对此做过研究。

对于MySQL,数据量的大小并不是唯一导致其性能问题的所在,还有一个更加重要的东西是连接数,MySQL活动连接数在大于100时性能直线下降,特别是对于MyISAM这种表锁引擎。所以对其进行分库,由多个daemon提供服务来保证稳定性。

我维护一个alexa排名400多的网站,在一次断电事故中memcache缓存失效,导致一个单表不过200万,总共大约5000万的分库连接数瞬间到达了1000而无法稳定工作,只有先将最大连接数降为100,几小时后逐渐恢复缓存后才恢复正常。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics