MySQL Too many connections 报错后的排查思路
从应急处理到长期修复,整理一次线上连接数打满的完整排查过程。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-05-27 15:39:59 MySQL LEFT函数 字符串处理 SQL技巧
最近在翻慢查询日志的时候,看到好几处用LEFT取域名前缀的处理,顺手整理一下这个函数,省得以后新同事再过来问。
LEFT的语法很简单,两个参数:第一个是原始字符串,第二个是要截的字符长度。
LEFT(string, length)
日常用得最多的场景就是从某个字段里取前几位,比如:
SELECT LEFT(w_domain, 4) AS domain_prefix FROM web_info;
这样就能拿到每个域名前4个字符。对一个固定字符串做测试也很直观:
SELECT LEFT('www.csdn.net', 5);
-- 结果是'www.c'
边界条件得特别注意一下,因为线上环境里length经常是拼接出来的,很容易踩坑。
如果length大于字符串的实际长度,函数不会报错,直接把整个字符串返回来,这一般是符合预期的。但如果传了个负数或者0进去,就会返回空字符串——有一次调试半天才发现是上游业务传了个负数,结果怎么都查不出数据。参数本身是NULL的时候,返回值也是NULL,这个很自然,但写条件判断时要记得处理,不然可能漏数据。
截取方向不只是从左往右。MySQL里还有RIGHT从右边截,以及SUBSTRING可以指定起始位置和长度。一般来说只要取左边的几位,直接用LEFT最省事,可读性也更好。
非要取中间一段,或者起始位置不固定的时候,才换成SUBSTRING。
性能方面,如果web_info这种表量比较大,直接在SELECT里用LEFT不会触发索引,但单纯取数据影响不大。真正需要留意的,是在WHERE条件里用LEFT做匹配,这时候索引就失效了,大表一跑CPU直接飙上去。如果确实有这种需求,要么给字段建个前缀索引,要么提前把截取后的值冗余存一个列。另外就是尽量别在高峰期搞全表扫描的操作,能错峰就错峰。
对一些格式固定的字符串,有时候用正则去匹配比硬截几位更灵活,可以结合着用,看具体需求。
从应急处理到长期修复,整理一次线上连接数打满的完整排查过程。
整理了 MyBatis XML 里处理大于、小于等特殊符号的两种方式,以及动态 SQL 里容易报错的写法,配了可直接上手的示例。
记录一次 Windows 下 MySQL 服务启动报系统找不到指定文件的排查过程。
还在为Excel字符串查找犯愁?本文系统解析FIND、SEARCH等四大核心函数,助你轻松实现字符串包含判断。从区分大小写到通配符运用,再到结合IFERROR处理错误,更有标记关键字行、提取特定文本等实用场景案例。告别繁琐,即刻提升你的Excel效率!
MySQL身份验证机制经历了从基础密码认证到插件化架构的演进,8.0版本默认采用的caching_sha2_password插件通过加盐哈希、迭代计算和双模式认证显著提升了安全性。对于传输层安全,SSL证书认证提供了端到端的加密保护。实际部署中需综合考虑兼容性与安全性,建议新系统优先使用caching_sha2_password插件并配置SSL,遗留系统可临时采用mysql_native_password插件过渡。通过密码策略强化、审计日志配置和多因素认证集成,可构建多层次的数据库安全防护体系。