数据库知识面试复习

1.存储引擎:
    (1)处于MYSQL服务器的最底层,直接存储数据    
    (2)本质就是特定的数据存储格式    
    (3)MyISAM:
        1.采用B+树实现
        2.访问速度快
        3.数据插入时不排序,插入快
        4.不支持事务,外键约束(在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键)
        5.表级锁,不支持高并发
    (4)InnoDB:
        (1)支持事务、外键约束
        (2)行级锁,擅长处理并发
        (3)有独立的缓冲池
        (4)数据插入前按照主键排序,不擅长快速插入和检索
    (5)ACID:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。
2.数据类型:
    (1)tinyint(1字节),smallint(2字节),mediumint(3字节),int(4字节),bigint(8字节)
    (2)decimal(长度,精度)
    (3)将null插入timestamp字段后,实际插入了mysql服务器当前的日期和时间
    (4)复合数据类型:enum,set
    (5)blob二进制大数据存储:声音,图像,图片,视频
    (7)在mysql中应该使用内置的日期和时间数据类型,而不是用字符串来存储日期和时间
3.范式与逆范式:
    (1)问题:
        1.数据冗余
        2.插入异常:可能会有多列空值
        3.删除异常
        4.更新异常:需要对所有记录都进行操作
    (2)范式:
        1.1nf:属性不能有多个值;不能有重复的属性
        2.2nf:确保表中每列都和主键相关
        3.3nf:不包含已在其他表中已包含的非关键值信息
    (3)数据库越范式化,就需要join越多的表
    (4)逆范式:打破范式的规定,通过增加冗余或重复的数据来提高数据库的性能
    (5)单表查询比关联查询要快
4.数据库索引:
    (1)explain+语句:获取语句的执行计划,而不是真正执行该语句
    (2)tips:
        1.不要过度使用索引,占空间
        2.只对where子句中频繁使用的建立索引
        3.使用短索引
5.sql语句优化:
    (1)目标:避免全表扫描,尽量走索引
    (2)tips:
                truncate 删除全表
                尽可能使用commit
                使用union-all不排除重复结果,代替union提高效率
                避免使用*
                利用条件过滤避免limit分页,因为limit(工作原理(limit n,m):先读取前面n条记录,然后抛弃前n条,读后面m条想要的;n约到性能越差)会检索全部

6.分区分表:
    (1)分区:将数据分段划分在多个位置存放
    (2)分表:子表
        垂直拆分:分离冷热数据
        水平拆分
7.数据库服务器架构:
    通过主从复制来同步数据(是异步的),再通过读写分离来提升数据库的并发负载能力
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值