每个工具都有自己的定位,以及特定的使用场景。如果不在其擅长的场景下使用很可能你会遇上很多的痛苦。下面尝试通过描述下mysql函数的使用场景来回答题主的问题。
先看看mysql的一些个性:
1:单表千万级别(优化到极致能达到亿级别)行记录存储,简单条件(最好条件上有索引,当然也需要看具体case)查询
2:mysql喜欢大内存(可以将大量的索引直接放到内存中),喜欢高性能IO(比如SSD)
3:高并发的时候,CPU资源消耗也是非常严重的。如果峰值请求的时候,给遇上一个mysql函数(需要CPU做计算),那就很可能因为一个简单mysql函数酿成了悲剧。mysql出事故的时候,load很容易飙到100+
下面再看我们系统的场景
1:mysql不是系统的瓶颈
该场景下可以随意的使用mysql提供的特性功能,例如msyql函数,多方便好用啊。较少了应用层的工作量。而且对你系统性能没有多大的影响。
举例说明:小型系统,请求量小,数据存储量小,mysql server内存充足,统计需求(一个sql跑一个晚上你也不担心)
2:mysql即将(或者正在)是系统的瓶颈
这个时候mysql最好仅仅当做存储来用,尽量不做任何额外的计算。优化的时候,会尽可能的把计算消耗的资源移到应用层去做。尽量保证mysql仅仅做储存工作。另外使用mysql函数很可能走不了索引,那个更悲剧了,这样系统更没办法抗住大并发。