MYSql面试

1.mysql的复制原理及流程
导入需要重新生成数据库,然后解析sql语句,检查约束、建立索引、生成数据文件,此时就是向硬盘中写的过程;
复制是直接向硬盘写的过程;
(3种方式)
       1) 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;
       2) 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;

       3) 从:sql执行线程——执行relay log中的语句



2.mysql中的 myisam 与 innodb 区别 (5点)-------存储引擎
    myism 简单效率高,用于读多写少;就是快就是方便 就是好,有高发写操作时,可以通过框架弥补;
    innodb用于写多的时候;支持事务处理、外键、行级锁
    innodb支持事物,行级锁

3.varchar 与 char区别,varchar(50)  50的含义,int(12)12含义
    a. varchar变长,char定长
    b. 存储容量不同 char255 varchar 65532(开头1长度2) latin1个 字符占1位 gbk2位 utf83位
4.0之前  50是值字节 只能存 16个(utf8 三个)
5.0之后 50就是字符 存50个
    c.int类型的存储大小是固定的,4个字节32位,2的32次方, 不会变的  (12)只是设置显示多长的宽度,实际小于该宽度就0补齐,
4.innodb事务与日志的实现方式

5.binlog日志录入格式以及区别

6.drop delete truncate区别
drop删表  delete truncate 删数据,delete删一行会记录在事务日志中,truncate则一次性全部删除,并且不记录日志,由外键的不能用truncate删除表(其实是删除数据了,表结构不会变),因为他不记录在日志中,不能激活触发器

7.数据库优化
(1)sql语句优化
(2)索引优化
(3)数据库结构优化
避免全表扫描,select*   where null /or/函数/<、>
8.范式
第一范式:每一列都是不可分割的数据项,无重复列
第二范式:实体属性完全依赖主关键字
第三范式:不能包含其他表中已包含的非主关键字信息

9.事务特性acid

     原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样

       一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

       隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

       持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。


10.连接种类
内连接: ....  inner join   ...  on
外连接:左外连接  ....  left join  ...   on
                右外连接   ....  right join  ...   on
                全连接(mysql不支持)

11.union 合并取并集 如果要保留重复 用union all

12.索引的分类
hash只能精确查找
btree左前缀原则(断桥原则)一旦查询条件不是全部就不能了













你可能感兴趣的:(MYSql面试)