SQL ? No SQL?

?

(本文镜像于http://cloudme.net84.net/?p=29)

在“三蛋”免费空间(000webhost)上装了一个Discuz!的论坛,经过简单的配置就可以使用。免费空间能够支持功能强大的PHP论坛,已经让人欣慰了。Discuz!在数据库里面塞了上百个表,访问的速度都还令人满意。但毕竟000webhost的每台MYSQL服务器是很多个虚拟主机共用的,对数据库访问太频繁肯定会导致其他空间的性能受到影响,进而被管理员给封掉网站。不过我想,我的论坛也就拿来玩玩,平时估计也就几个人在线,应该问题不大吧?

但是距离装好论坛的时间还不到一天,我在在线人数为2的时候访问该论坛,就出现了如下错误提示:

Warning: mysql_pconnect() [function.mysql-pconnect]: Too many connections in /home/freehost/new_encoded.php on line 23

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user ‘nobody’@’localhost’ (using password: NO) in /home/freehost/new_encoded.php on line 24

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/freehost/new_encoded.php on line 24

Warning: Cannot modify header information – headers already sent by (output started at /home/freehost/new_encoded.php:23) in /home/freehost/new_encoded.php on line 14

从字面上来看,是MySQL的负载过大。我不知道它是说该台服务器的总体负载,还是论坛数据库的负载。即使是总体负载,也有可能有我的原因吧,不然这个论坛怎么马上就被封掉了,然后提示Website Under Review呢?可是,大哥,我才两个同时在线人数呢……不过,总归比GFW封网站好一点,毕竟000webhost还有相应的出错提示,不会像某堵巨大的墙一样,直接返回“浏览器找不到该网站”……

免费空间对数据库做很大限制是可以理解的,毕竟数据库的负载过大会拖慢大量的网站。同时,我又想,现有的数据库能不能做足够的优化,让较低的硬件就可以承载更多的数据访问量呢?MYSQL是典型的关系数据库,用SQL语言对数据内容进行查询和更新。关系数据库的好处不少,缺点也不少,但毕竟是现在的主流数据库模式,Oracle就是靠它成为顶级公司的。熟悉了SQL语言,用气关系数据库来很方便,再复杂的逻辑也不怕,大不了多建几个表就是了!使用起来方便了,数据库底层处理起来就复杂了。表与表之间复杂的关联性会消耗很多的系统资源。在并发性很高的情况下,关系数据库可能就撑不住了!所以,现在NoSQL数据库开始足够流行,Google的BigTable就是著名的例子。NoSQL的数据库也不是万金油,目前只能用于某些方面,但是它的可扩展性好,由于它简单的设计理念,可以让它同时运行在很多台廉价的PC服务器上,所以能够支持的并发IO量可以非常非常大。另外,NoSQL不容易处理那些复杂的逻辑关系,会迫使开发人员优化自己的设计。

论坛程序的局部数据频繁访问的特性也许现在不是很适合NoSQL的数据库,但是,性能优化永远是计算机发展的主题。希望000webhost能够优化自己的架构,把我的论坛还给我。暂时还不能抛弃MySQL,毕竟WordPress和Discuz!都得依靠它。

要永不言弃坚持到底百折不挠宁死不屈,但我们好多人没想过,

SQL ? No SQL?

相关文章:

你感兴趣的文章:

标签云: