MySQL/面试题:如何调优 SQL

MySQL/面试题:如何调优 SQL

todo:应该参考陈阳的课程做一个系统的回答

SQL 的调优大致步骤如下:

根据慢日志定位慢查询SQL

MySql 中有很多系统变量,可以通过查询一些变量来获得 MySql 的一些配置信息。我们可以通过以下模糊查询语句来获得包含 query (SQL 查询)有关的系统变量。
阅读更多
MySQL/深入理解 MySQL 数据库锁

MySQL/深入理解 MySQL 数据库锁

数据库锁的分类

  • 按照锁的粒度划分,可分为表级锁、行级锁、页级锁 MyISAM 支持表级锁,InnoDB 支持表级锁和行级锁,BDB 支持页级锁(不常见),介于表级锁和行级锁之间。关于页,和数据库底层的存储结构有关,有机会讲一下页。

  • 按照锁级别划分,可分为读锁(共享锁)、写锁(排它锁)

  • 按照加锁方式划分,可分为自动锁、显示锁

  • 按照操作划分,可分为 DML 锁、DDL 锁

阅读更多
MySQL/面试题:数据库索引

MySQL/面试题:数据库索引

为什么要使用索引

当一张表数据量很小,不加索引,直接全表扫描可能会更快

什么样的信息能称为索引

索引的数据结构

哈希表这种结构适用于只有等值查询的场景 MySQL 有自适应的 hash 索引 有序数组索引只适用于静态存储引擎 大多数的数据库存储却并不使用二叉树,而是使用 B+ 树。

阅读更多
MySQL/面试题:如何设计一个关系型数据库

MySQL/面试题:如何设计一个关系型数据库

咋一看这个题目有点空,其实能够考研我们对数据库设计的整体把控。首先数据库系统可以分为两层: - Server 层(也就是程序实例),提供获取以及管理数据的方式,还要必要的问题追踪机制。Server 层又可以细分为: - 存储管理:将数据的逻辑关系转换为物理关系 - 缓存机制:优化执行效率 - SQL 解析:

阅读更多