应届生面试要点总结(6)数据库相关

mysql引擎和区别

MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有要求,或者以select,insert为主的应用基本上可以用这个引擎来创建表。当执行insert和update时,执行写操作时,要锁定整个表,所以效率低。但它保存了表的行数,执行select count * from table时,不需全表扫描,而是直接读取保存的值。若读操作多于写操作,并且不需要事务,myisam是首选。非聚集索引。B+树

innodb该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储引擎的特点:支持自动增长列,支持外键约束。支持事务,行级锁,mysql运行时,innodb会在内存中建立缓冲池,用于缓冲数据和索引。不保存表的行数,执行select count * from table时要全表扫描。写不锁定全表,高并发时效率高。聚集索引。

Memory存储引擎使用存在于内存中的内容来创建表。

Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。

b-tree索引可以用于使用<<==>=>或者between运算符比较。如果like的参数是一个没有以通配符起始的常量字符串也可以使用这种索引。

Hash索引:只能用于使用=或<=>运算符的比较,不能用于有范围的运算符,因为键经过hash以后的值没有意义;优化器不能使用hash索引来加速order by操作,这种类型的索引不能用于按顺序查找下个条目;mysql无法使用hash索引来估计两个值之间有多少行;查找某行记录必须全键匹配,而且b-tree索引,任何该键的左前缀都可以用于查找记录;若一张myisam或innodb表换为hash索引的内存表,一些查询可能受影响。

 

mysql索引使用b+树数据结构。

索引:提高数据库访问速度的数据库对象,但有索引也不一定就会快。优点:索引可避免扫描全表;对于非聚集索引,有些查询甚至可以不访问数据项;聚集索引可以避免数据插入操作集中于表的最后一个数据页;一些情况下,索引还可以避免排序,适用于某范围内的数据。

虽然索引可以提高查询速度,但是他们会导致数据库更新性能下降,因为大部分数据更新时需要同时更新索引。索引要占用物理空间,除了数据表外每个索引还有占物理空间。

 

非聚集索引:数据库索引顺序存储,叶子节点存储真实数据行,不再有另外单独的数据页,有一个指针指向数据块。在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只能用一种,若一张表没有聚集索引,则它被成为堆集,这样的表的数据行无特定的顺序,所有新行将被添加到表的末尾。

聚集索引:叶子节点并非数据节点;叶子节点为每一个真正的数据行存储一个“键-指针”对;叶子节点中还存储一个指针偏移量,根据页指针和指针偏移量可以定位到具体的数据行;在除叶节点外的其它索引节点,存储的是类似内容,只不过指向下一级索引页。

聚集索引是一种稀疏索引,数据页上一页的索引页存储的是页指针,不是行指针。对于非聚集索引,是密集索引,数据页的上一级索引为每一个数据行存储一条索引记录。

 

mysql分页查询:客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库中的数据。limit m,n从m+1条开始,取n条。查询第一条到第十条的是:select * from table limit 0, 10; 对应的就是第一页的数据。查询第10条到20条的是:select * from table limit 10, 10; 对应第二页。第三页:select * from table limit 20 ,10。总结select * from table limit (页数-1) * 每页条数,每页条数。

 

truncate 、delete与drop区别

1、truncate 和 delete 只删除数据不删除表的结构(定义)。drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

2、delete 语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值