最近看了一篇文章,是PG数据库因为过载而不稳定:
让我意识到,数据库是需要限流的,不应该不考虑硬件能力,而极限压榨数据库,否则稳定性、相应时间都会有问题。
于是我就学习了一些限流的知识,对于PG数据库来说,可以在服务端配置最大连接数。
对于Web应用,Web服务端一般可以限制http请求的频率,进而限制后端对数据库的访问频率。
数据库服务器端,有对SQL或事务的级别的限流功能吗?我好像还没听说过。
这篇文章确实启发了我重新认识数据库,使我意识到架构的重要性(架构听起来很高级,其实内容很简单,就是对各种软件组件,例如数据库的使用)。
上面那篇文章的作者提到,有人说POLARDB不好用,但是在作者的公司里却运行稳定。这让我形成这样一种想法:每种软件都有它适用的场景和所要求的硬件,用对了、配置对了就是好软件,用不对、不会配置,就是烂软件。一个软件烂,不一定是真的是它本身烂,而可能是使用它的人不会用。
这有点像用人,有些人看起来很烂,但是会用人的人,懂得在怎样的条件下,能发挥这个人的长处,还懂得怎样利用这个长处创造价值,例如,禅师与大虫罗德曼。
给予软件正确的应用场景和软硬件配置,让系统使用它的长处,而避免触碰它的短处,这也是一种系统思维或者或整体思维。