快手面试中被问到的Mysql面试题,答案拿去

说说Mysql中有哪几种锁

  • 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,并发度最低。
  • 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,并发度也最高。
  • 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;并发度一般。

说几种常见的存储引擎

  • MyISAM
  • InnoDB(常用)
  • Memory
  • 其他的不常用,面试中把这三种说出来基本ok了。

说说MySQL数据库中MyISAM和InnoDB的区别

MyISAM

  • 不支持事务,但是每次查询都是原子的;
  • 支持表级锁,即每次操作是对整个表加锁;
  • 存储表的总行数;
  • 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
  • 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDB

  • 支持ACID的事务,支持事务的四种隔离级别;
  • 支持行级锁及外键约束:因此可以支持写并发;
  • 不存储总行数;
  • 主键索引采用聚集索引

Mysql中InnoDB支持的四种事务隔离级别名称,以及区别

  1. read uncommited(读未提交)
  2. read committed(读已提交)
  3. repeatable read(可重复读)
  4. serializable(串行事物)

CHAR和VARCHAR的区别

char固定长度,varchar可伸缩长度
当数据长度固定时,用char,长度变化大时用varchar

主键和候选键有什么区别

  • 表格的每一行都由主键唯一标识,一个表只有一个主键。
  • 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

BLOB和TEXT有什么区别

  • BLOB是一个二进制对象,可以容纳可变数量的数据。TEXT是一个不区分大小写的BLOB。
  • BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

最多可以使用多少列创建索引

任何标准表最多可以创建16个索引列。

mysql里记录货币用什么字段类型好

NUMERIC和DECIMAL类型被Mysql实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定。

MySQL一天十万条以上的增量,怎么优化

  • 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
  • 选择合适的表字段数据类型和存储引擎,适当的添加索引。
  • mysql库主从读写分离。
  • 找规律分表,减少单表中的数据量提高查询速度。
  • 添加缓存机制,比如memcached,apc等。
  • 不经常改动的页面,生成静态页面。
  • 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容