MySQL
1,MySQL 中有哪几种锁?
(1)行级锁:开销小,上锁快,不会出现死锁,发生锁冲突的概率最高,并发对低.
(2)表级锁:开销大,上锁慢,会发生死锁,锁冲突的概率最低.并发的也最高
(3)页面锁
2,简述在MySQL 数据库中 MyISAM 和InnoDB 的区别?
(1)myISAM
2.1.1用的表级锁,不支持事务,存储表的总数,是用的是菲拒接索引,索引文件的数据域存储执行数据文件的指针
2.1.2myISAM表有三个文件,索引文件,数据文件,表结构文件.
(2)INonDB
2.2.1使用的行级锁及外键,支持并发读写操作,支持事务,采用聚集索引,索引的数据域存储数据本身,辅索引的数据域存储主键的值.
3,NOW()和 CURRENT_DATE()有什么区别?
now()显示的是当前年月日期,小时分钟和秒,current_date()显示的是年月日
4,MySQL 里记录货币用什么字段类型好?
使用numeric和decimal作为货币的类型,以为他两精准度比较高.
例如salary decimal(9.2)表示-9999999.99-9999999.99
5,列的字符串类型可以是什么?
1,text ,char,set,枚举,blob
6,MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?
1,书写高效率SQL,少使用*号查询
2.做好有规律的分库分表
3,不经常改动的页面,生成静态页面
4,MySQL库主从读写分离,添加缓存机制.
7,锁的优化策略?
1,使用读写分离
2.锁的颗粒度不宜太小,不然加锁释放锁耗费性能
3,分段加锁
8,索引的底层实现原理和优化?
9,什么情况下设置了索引但无法使用?
1,在模糊查询中,使用% 作为开头
2,使用or时候,左右没有使用索引
3,数据类型出现隐式转型(如varchar类型不使用'',会被转型为int)
10,优化数据库的方法?
1,优化查询语句
2.使用JOIN代替子查询
3,选取最使用的字段属性,减少字段宽度,尽量把字段设置为notnull.
4,建立索引
11简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面?
索引:索引是一种特殊的表,它包含对数据表里的所有记录的引指针
主键:主键是一种特殊的唯一索引,在一张表中只可以有一个主键索引,主键唯一标识一条记录.使用primary key来设置
普通索引 :普通索引的唯一任务就是加快对数据的访问速度,索引列表中的值可以重复.
唯一索引: 某个数据列只能包含不同的值,使用unique来设置,保证数据的唯一性
联合索引: 可以覆盖多个key的索引就是联合索引
索引极大的提高了查询速度,但是降低了增删改速度,因为执行这些写操作时候,还要操作索引文件
12
mysql的引擎
InNoBD存储引擎,支持事务,支持行锁,表锁,页面锁等。支持外键。是mysql的默认存储引擎
myISAM :不支持事务,myISAM查询和查询速度快。
memory:数据不大时候,查询看,底层数据结构为散装列表形式存储。不利于范围查询,但是单个查询比较快。
NDB 存储引擎,是在数据全部存放在内存中,通过key快速查询到。复杂操作时,需要很大网络开销,会导致其速度慢。
联合索引只查询到一列会失效吗?
最左原则,如果查询的列不是最左索引则会失效。
mysql索引有哪些?
主键索引,联合索引,唯一索引。外建索引。组合索引。
如果有很多重复的数据,索引会生效吗?
会生效,使用普通索引,普通索引允许包含的列有重复的值。
回表操作
回表查询:普通索引,二级索引,辅助索引的叶子节点存放的信息是主键索引,或者左边那个索引,查询会出现回表查询。
联合索引的存储结构
在b+tree存储中,是最左列表有序存储的,后面的列是无效的
如何避免回表查询
使用最左匹配原则。根据主键索引查询,或者联合索引是,查询的列都是有索引的列,会使用索引下推。
聚簇索引和非聚簇索引
聚簇索引就是把数据保存在索引表中,主键索引就是聚簇索引的一种,已经我们看mysql包,发现InnoDB索引引擎就是聚簇索引
索引下推ICP
就是辅助索引情况下,在辅助索引这边将where语句and的内容对比了,查到主键索引信息
使用explain分析索引
可以详细列出mysql执行的信息。是否使用索引,使用类型等
索引失效场景
1:使用like查询并且%符号在左侧,它无法在b+tree查找
2:使用函数运算或者子查询等
3:联合索引where条件不是最左索引
4:数据太少,mysql语句优化器会选择全表扫描
5:not in 会使索引失效,in不会。
6,查询设定索引的列,使用is null 会索引失效,is not null where 索引或者主键索引会走索引叶子节点。

浙公网安备 33010602011771号