mysql考试选择题,MySQL面试题练习

InnoDb和MyIsam存储引起的区别?

外键:InnoDB支持外键,而myisam不支持外键;

事务:innodb支持事务机制,myisam不支持;

索引:innodb是聚合索引,数据和主键索引在一起,也可以通过辅助索引查找主索引,索引的叶子节点存储的就是节点数据文件,索引innodb的索引不宜过大;而myisam不是聚合索引,myisam的主索引和辅助索引的叶子节点存储的是数据文件的地址,索引myisam存储引起的索引文件和数据文件是分开存储的。这两个存储引擎的索引的key都是唯一的。

崩溃恢复:innodb具有崩溃恢复能力,myisam没有;

锁:innodb锁的最小粒度是行锁,而myisam最小的粒度是表锁,这就导致更新一条数据时会锁住该表中所有的数据,这样并发访问会受限,这是mysql把默认存储引擎由myisam切换成innodb的重要原因;

速度:如果数据库的主要操作时插入和查询,则myisam的存储引擎性能高,如果经常更新操作,则innodb的速度快点;

Innodb共享表空间和独享表空间区别?

共享表空间就是所有的表数据和索引存储在一个文件,每个表有一个.frm的描述文件;

独享表空间:每个表都单独占有自己的表数据文件和描述文件;

优缺点:

共享表空间:表数据文件都存在一起,便于查询,但是修改删除会产生磁盘碎片,同事数据库文件太大时拆成多个小文件,操作的复杂度提高;

独享表空间:每个文件数据单独存储,操作方便;但是文件系统的最大就是数据文件的最大值;

mysql锁概念

mysql按照锁粒度大小的化为可分为:表锁、页锁和行锁;

按照使用方式的划分可分为:排除锁(X锁,死锁)和共享锁(S锁),事务对数据对象加上排他锁以后可以对数据进行读写操作,其他事务加不了锁;事务对对象加上共享锁以后,只能对数据进行读操作,其他事务也可以对数据加共享锁,但是不能加排他锁;

悲观锁和乐观锁:

分库分表

背景:随着数据库的数据量越来越大,查询所耗费的时间越来越长,同事MySQL对更改表数据时的加锁操作,会影响并发访问;

解决以上问题数据量大的途径是分库分表,对于阻塞读操作可以采用读写分离解决;

分表:

水平划分:按照行级划分,同一模块下多个结构相同的子表;

垂直划分:按照列级划分,将表划分为不同字段结构的表;

分库:

水平划分:主要根据数据属性拆分物理数据库,解决数量大的IO密集问题;

垂直划分:按照业务模块划分数据库;

读写分离:在主服务器上进行写操作,同步到从服务器上;从服务器只能提供读数据操作,实现备份的同时也实现了数据库性能的优化,提升服务器的安全性。

关系型和非关系型数据库优缺点?

关系型数据库:

优点:结构简单,适合复杂的查询,维护方便;

缺点:读写性能差,尤其面对海量数据的高效率读写;固定表结构,灵活性差;高并发读写需求时面临硬盘I/O瓶颈;

非关系型数据库:

键值存储Redis、列存储HBase、文档数据库MongoDB和CoachDB、图形数据库LinfoGrid

优点:结构灵活,适合海量数据的查询,速度快,扩展性好;

缺点:不支持事务,sql语句,不利于复杂的查询操作;

数据库索引

唯一索引:每个索引对应唯一的数据记录;

主键索引:以主键作为索引;

聚集索引:索引的顺序和数据存储的物理顺序是相同的;

索引优缺点:

优点:加快表的查询速度;加快表之间的连接;唯一索引可以保证每一行数据的唯一性;在进行分组和排序是,提高速度;

缺点:需要额外占用存储空间;索引的维护和创建需要花费一定时间;当表发生改变时,不仅要改变记录,也要更新索引;

索引的底层实现

索引是以索引文件的形式存储在磁盘上,访问磁盘需要进行I/O操作,因此I/O操作的次数是衡量索引底层实现好坏的标准;

MySQL性能优化

索引:为了避免全表扫描,首先考虑在where以及order by涉及的列上建立索引;

SQL:在where语句中避免使用null值判断,避免使用 != < > in not in,避免对字段进行表达式操作和函数操作,会导致引擎放弃索引而进行全表扫描;用exists代替in是个不错的选择;任何地方不要使用select * from tbl,不要返回用不到的字段;

设计表:尽量使用数字型字段;使用字符型会降低查询和连接的效率,增加存储开销,因为引起处理查询和连接时会逐个比较字符串中每一个字段,对于数字型而言一次就够了;尽量使用varchar代替char,因为变长字段存储空间小,按需分配;避免频繁的创建表、删除表和减少系统的表的资源消耗;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值