• 关于mysql的一些知识点及面试问题


    3.1 MySql调优

    先引用一张图片

    目录图

    1、SQL语句优化

    • 开启慢查询功能
    vim /etc/my.cnf
    [mysqld]
    slow-query-log = on # 开启慢查询功能
    slow_query_log_file = /data/slow-query.log # 慢查询日志存放路径与名称
    long_query_time = 5 # 查询时间超过5s的查询语句
    log-queries-not-using-indexes = on # 列出没有使用索引的查询语句

    1)查看所有日志状态: show variables like '%quer%';

    2)查看慢查询状态:show variables like 'show%'

    • 分析SQL语句

    MySql内部函数explain(查询sql的执行计划),explain返回各列的含义

    table:显示这一行的数据是关于哪张表的
    type:这是重要的列,显示连接使用了何种类型。
    从最好到最差的连接类型为const、eq_reg、ref、range、index 和ALL
    possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。
    key:实际使用的索引。如果为NULL,则没有使用索引。
    keyjen:使用的索引的长度。在不损失精确性的情况下,长度越短越好
    ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
    rows: MYSQL认为必须检查的用来返回请求数据的行数
    • 子查询优化

    子查询尽量不用或改成join

    • group by 优化

    group by 尽量使用索引字段

    • limit 优化

    给查询语句增加limit

    2、索引优化

    • 重复索引
    • 冗余索引
    • 检查重复及冗余索引的工具
    • 删除不用的索引

    3、数据库结构优化

    • 选择合适的数据类型
    • 表的范式化
    • 表的反范式化的使用
    • 表的垂直拆分(列拆分)
    • 表的水行拆分(行拆分)

    4、配置优化

    • 操作系统配置

    1)缓存池大小

    2)打开文件限制

    • MySQL配置

    1)innodb缓冲池内存占用大小

    2)innodb_buffer_pool_instances 缓冲池个数

    3)innodb_log_buffer_size 缓冲的大小

    4)innodb IO配置

    5、服务器硬件优化

    • CPU 多核
    • 硬盘 raid0 raid1 raid5增加硬盘IO速度

    3.2 数据库调优步骤

    3.3 MySql相关问题

    1、InnoDB myisam区别

    • innodb支持事务、myisam不支持事务
    • innodb不支持全文索引、myisam支持全文索引,查询性能较快
    • innodb行级锁、myisam表级锁

    2、怎么处理MySQL的慢查询?

    开启慢查询->explain分析SQL->横纵向分表

    3、Myisam和Innodb的区别?

    全文索引

    事务

    Innodb

    Myisam

    4、Mysql中索引类型有哪些?

    • 普通索引:允许被索引的数据列包含重复的值
    • 唯一索引:可以保证数据记录的唯一性
    • 主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字primary key来创建
    • 全文索引:通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术索引可以极大地提高数据的查询速度

    5、为什么用自增主键

    数据库使用的是B+Tree,非自增会出现要插入到节点与节点中间,会发生节点分裂。

    6、为什么用联合索引

    减少开销。建一个联合索引(col1,col2,col3),实际相当于建了(col1),(col1,col2),(col1,col2,col3)三个索引。

  • 相关阅读:
    尿酸酶丨Worthington猪肝尿酸酶的特征:
    文盘 Rust -- tokio 绑定 cpu 实践
    大厂面试-好未来一面算法之求最长无重复子串长度
    Unity 场景烘培 ——unity Post-Processing后处理1(四)
    应用服务器部署:安装Docker及摘取镜像
    经典面试题第十一更---类型转换
    指针数组与数组指针的区别
    刚刚!ACL 2024公布7篇最佳论文,华中科技大学本科生一作成果获奖
    Day7:浅谈useEffect
    【Java】集合框架和泛型(三)
  • 原文地址:https://blog.csdn.net/citywu123/article/details/127986773