1、MySQL中myisam与innodb的区别,至少5点:
- InnoDB支持事物,而MyISAM不支持事物
- InnoDB支持行级锁,而MyISAM支持表级锁
- InnoDB支持MVCC, 而MyISAM不支持
- InnoDB支持外键,而MyISAM不支持
- InnoDB在mysql5.6前不支持FULLTEXT类型的全文索引,但是InnoDB可以使用sphinx插件支持全文索引,5.6时不支持中文全文索引,MyISAM支持FULLTEXT类型的全文索引
2、innodb引擎的4大特性
- 插入缓冲(insert buffer)
- 二次写(double write)
- 自适应哈希索引(ahi)
- 预读(read ahead)
3、myisam与innodb二者select count(*)哪个更快,为什么
- myisam更快,因为myisam内部维护了一个计数器,可以直接调取。
4、varchar与char的区别
- char是一种固定长度的类型,varchar则是一种可变长度的类型
5、varchar(50)中50的涵义
- 最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)
6、int(20)中20的涵义
- 是指显示字符的长度。但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示00000000001 ~~~00000000010,当字符的位数超过11,它也只显示11位,如果你没有加那个让它未满11位就前面加0的参数,它不会在前面加0
20表示最大显示宽度为20,但仍占4字节存储,存储范围不变;
7、事物的4种隔离级别
- 读未提交(RU)
- 读已提交(RC)
- 可重复读(RR)
-
串行
8、事务是如何通过日志来实现的,说得越深入越好。
- 事务日志是通过redo和innodb的存储引擎日志缓冲(Innodb log buffer)来实现的,当开始一个事务的时候,会记录该事务的lsn(log sequence number)号; 当事务执行时,会往InnoDB存储引擎的日志的日志缓存里面插入事务日志;当事务提交时,必须将存储引擎的日志缓冲写入磁盘(通过innodb_flush_log_at_trx_commit来控制),也就是写数据前,需要先写日志。这种方式称为“预写日志方式”
9、数据库是否支持emoji表情,如果不支持,如何操作?
- 如果是utf8字符集的话,需要升级至utf8_mb4方可支持
10、索引是什么?有什么作用以及优缺点?
- 索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构
- 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
- 索引加快数据库的检索速度
- 唯一索引可以确保每一行数据的唯一性
- 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
- 索引降低了插入、删除、修改等维护任务的速度
- 索引需要占物理和数据空间
11、MySQL数据库几个基本的索引类型
- 普通索引、唯一索引、主键索引、全文索引
12、什么是事务?
- 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
13、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
14、如何区分FLOAT和DOUBLE?
- 浮点数以8位精度存储在FLOAT中,并且有四个字节。
- 浮点数存储在DOUBLE中,精度为18位,有八个字节。
网友评论