首页 > 社交 > 科普中国

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

常驻编辑 科普中国 2022-06-22 字段   路由   详解   索引   事务   版本   操作   数据库   引擎   数据   日志

64.百万级别以上的数据如何删除?

关于索引:由于索引需要额外的维护成本,因为索引文件是单独存在的文件,所以当我们对数据的增加,修改,删除,都会产生额外的对索引文件的操作,这些操作需要消耗额外的IO,会降低增/改/删的执行效率。70s拜客生活常识网

所以,在我们删除数据库百万级别数据的时候,查询MySQL官方手册得知删除数据的速度和创建的索引数量是成正比的。70s拜客生活常识网

  1. 所以我们想要删除百万数据的时候可以先删除索引
  2. 然后删除其中无用数据
  3. 删除完成后重新创建索引创建索引也非常快

65.百万千万级大表如何添加字段?

当线上的数据库数据量到达几百万、上千万的时候,加一个字段就没那么简单,因为可能会长时间锁表。70s拜客生活常识网

大表添加字段,通常有这些做法:70s拜客生活常识网

  • 通过中间表转换过去创建一个临时的新表,把旧表的结构完全复制过去,添加字段,再把旧表数据复制过去,删除旧表,新表命名为旧表的名称,这种方式可能回丢掉一些数据。
  • 用pt-online-schema-changept-online-schema-change是percona公司开发的一个工具,它可以在线修改表结构,它的原理也是通过中间表。
  • 先在从库添加 再进行主从切换如果一张表数据量大且是热表(读写特别频繁),则可以考虑先在从库添加,再进行主从切换,切换后再将其他几个节点上添加字段。

66.MySQL 数据库 cpu 飙升的话,要怎么处理呢?

排查过程:70s拜客生活常识网

(1)使用 top 命令观察,确定是 mysqld 导致还是其他原因。70s拜客生活常识网

(2)如果是 mysqld 导致的,show processlist,查看 session 情况,确定是不是有消耗资源的 sql 在运行。70s拜客生活常识网

(3)找出消耗高的 sql,看看执行计划是否准确, 索引是否缺失,数据量是否太大。70s拜客生活常识网

处理:70s拜客生活常识网

(1)kill 掉这些线程 (同时观察 cpu 使用率是否下降),70s拜客生活常识网

(2)进行相应的调整 (比如说加索引、改 sql、改内存参数)70s拜客生活常识网

(3)重新跑这些 SQL。70s拜客生活常识网

其他情况:70s拜客生活常识网

也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等70s拜客生活常识网

原文链接:https://mp.weixin.qq.com/s/zSTyZ-8CFalwAYSB0PN6wA70s拜客生活常识网

相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • MySQL专题1:
  • 你今天玩游戏了吗?游戏道具了解下
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。