FAQ系列 | 提问的正确姿势

导读

怎么向叶老湿提问才能得到回复?

你造吗?

我的QQ好友已超过2000人,其中至少有一半是曾经有过技术交流,或者找我帮助解决MySQL相关问题的。

这样大致平均算下来,每天约要帮忙解答3-5个问题(每个问题至少交互3-5次)。

这对我来说,已然成了不小的额外“工作量”。因此,并不是所有的问题我都能回复,有些是能力不够,有些则是没兴趣回答,大概只有不到1/3的问题我会正面回复。

先说下哪些是我没能力回答的吧,大概有下面这样的:

  1. 想和我交流MySQL源码的,不好意思,我就一运维DBA,源码方面我并不擅长,倒是可以找阿里云RDS团队或其他同行聊聊;
  2. 直接问我“这个SQL执行很慢,怎么优化呢”,也不好意思,只有这种一句话的问题描述,我确实没能力回答。真想获得帮助的话,可以参考下方的“提问的正确姿势”;
  3. “你好,我想实现xxx功能,请问SQL该怎么写呢”,更不好意思了,写SQL还真不是我的强项,非要勉为其难让我写的话,麻烦先给我发个红包,谢谢。

有哪些是我没兴趣回答的呢?

  1. 发来一条消息,问“在吗”。这是被我一直诟病的最糟糕的打招呼方式,平白无故浪费别人时间。心情好的时候,我或许会回一个“你猜” 或 “不在”,没心情时则直接关闭对话框;
  2. 跟我说“老叶,能帮忙推荐一个牛一点的DBA吗,谢谢”。嗯,当然可以推荐,但麻烦您把大概要求说一下总可以吧,如果不是熟人,我的做法也是直接关闭对话框;
  3. “请问MySQL里xxx命令是什么用途呢”,抱歉,我不是人肉查询机,麻烦自己看手册。

那么,提问的正确姿势是什么呢?
先举几个例子吧:
Q: 这个SQL为什么很慢?
A: 这是个什么SQL呢?
Q: 这是zabbix后台的一个SQL。
……尼妹,贴一下原始SQL、表DDL、执行计划能死啊?

还是以这个SQL效率问题为例,我期望得到的回复是这样的:

  1. 相关表DDL长什么样,执行 SHOW CREATE TABLE 即可查看;
  2. 这个SQL的执行计划是怎样的,用 EXPLAIN 解析下就行了(包含完整的SQL);
  3. 必要的话,还可以提供SQL执行时的PROFILE结果;

另一种情况,如果是性能上存在问题的话,建议提供下面几个信息:

  1. (负载较高时)在服务器上执行top后的截屏;
  2. (负载较高时)运行vmstat 1 50后的截屏;
  3. (负载较高时)提供PROCESSLIST根据耗时排序后的截屏;
  4. 提供服务器硬件配置信息,MySQL配置文件;
    上述这些信息可以打成一个压缩包发出来。

当有了上面这3个信息,相信技术群里有很多人都可以帮到你了。

最后,还有一个绝招,那就是加入老叶的密圈成为付费粉丝,在这里,我会竭尽所能回答你的问题。

FAQ系列 | 提问的正确姿势》上有2条评论

  1. 周星星

    请问一下,如何能知道mysql里的process id和linux os上的tid的关系,从而可以定位到哪个mysql的线程资源消耗是最高的。

  2. 叶金荣 文章作者

    用sar -u -t -p pid,就可以看到多线程模式下,每个线程的cpu消耗了。
    除非某个线程耗时特别久,否则很那抓到其和mysql process id的对应关系。

发表评论

电子邮件地址不会被公开。

Time limit is exhausted. Please reload CAPTCHA.