数据库程序员面试分类真题26.docx

上传人:王** 文档编号:1343090 上传时间:2024-06-20 格式:DOCX 页数:13 大小:73.49KB
下载 相关 举报
数据库程序员面试分类真题26.docx_第1页
第1页 / 共13页
数据库程序员面试分类真题26.docx_第2页
第2页 / 共13页
数据库程序员面试分类真题26.docx_第3页
第3页 / 共13页
数据库程序员面试分类真题26.docx_第4页
第4页 / 共13页
数据库程序员面试分类真题26.docx_第5页
第5页 / 共13页
数据库程序员面试分类真题26.docx_第6页
第6页 / 共13页
数据库程序员面试分类真题26.docx_第7页
第7页 / 共13页
数据库程序员面试分类真题26.docx_第8页
第8页 / 共13页
数据库程序员面试分类真题26.docx_第9页
第9页 / 共13页
数据库程序员面试分类真题26.docx_第10页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库程序员面试分类真题26.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题26.docx(13页珍藏版)》请在优知文库上搜索。

1、数据库程序员面试分类真题26倚答题1. profile的意义以及使用场景有哪些?正确答案:MySQ1.可以使用profile分析SQ1.语句的性能消耗情况。例如,查询到SQ1.会执行多少时间,并看出CP(江南博哥)U、内存使用量,执行过程中系统锁及表锁的花费时间等信息。通过have_profiling参数可以查看MySQ1.是否支持ProfiIe,通过profiling参数可以查看当前系统profile是否开启。查看profile是否开启:mysqbshowariabksIite卸Ofi附VariBblejaK1ValueIprofiling(FTf启SQ制版能IPmfiIing-histor

2、y_$ize!15一般fiprofiling榭嵋Ria5,-JHOO,为。时格期profiling-1T以下是有关profile的一些常用命令:Dsetprofiling=l;*基于会话级别开启,关闭则用Setprofiling=off02) showprofileCPUforquery1;#查看CPU的消耗情况。3)showprofilememoryforquery1:*查看内存消耗情况。4)showprofileblockio,cpuforquery1;#查看1/0及CPU的消耗情况。可以使用如下的语句查询SQ1.的整体消耗百分比:SE1.ECTSTATE,SUM(DURATION)AST

3、OTA1._K,ROUND(1OO*SIM(DURATION)/(SE1.ECTSUM(DURATION)EROMINFORMATION_SCHEMA.PROFI1.INGWHEREQUERYD=1),2)SPCT_R,COUNT(*)ASCA1.1.S,SUM(DURATION)/COUNT(*)AS*RCalFROMINFORMATION_SCHEMA.PROFI1.INGWHEREQUERYID=IGROUPBYSTATEORDERBYTOTA1.RDESC;profile是一个非常量化的指标,可以根据这些量化指标来比较各项资源的消耗,有利于对SQ1.语句的整体把控。考点执行计划2. M

4、ySQ1.之CHECK.OPTIMIZE和ANA1.YZE的作用分别是什么?正确答案:分析表(ANA1.YZE)的主要作用是分析关键字的分布;检查表(CHECK)的主要作用是检查衣是否存在错误:优化表(OPTIMlZE)的主要作用是消除删除或者更新造成的空间浪费。详细信息见下表。OPTIMIZE(t)ANA1.YZE(M)CHECK(ft)腕OmMlZEUI以回碇风渺a片,雅io.taKdmfiXft乳或者城般对轴收僦确表(加WReHA鼠B1.OB或TEtT舶表)成多更我,雳么点使用OrnMiZETAB1.E奇领旗旗化格表帏处I库片甑合并,并且翻奸ilfci成频轴空触费ANA1.YZE以分后树

5、津协软的机分析岫网以腰斛敏储推翻计也对fMyIsAME本语句与性用myndk3相当CHECK的主蚱雕射跳和在皆诒CHKK也可以也自晚时有用讯Mfe,翅雕文悯粥佣解已硒ft.REPAIRTAB1.EmS*UOP11MEENOWRrrETOBIN1.OG1.OCA1.)TAB1.Etbl_mnic(.J_ua.ANA1.YZENOWRITETOBlN1.OG!1.OCA1.TAB1.Elbl_rame1.tHjIieKj.CHECKTAB1.EW三1.1.三1-W-option-!TOR1.TCR,DEIQlICKFASTMEDIUMEXTENDEDiCRNGED)嬲OPTIKflZETAB1.E

6、Iny部urANA1.YZETAB1.Emyyj1.usa;cckublc11)sq1.ujef;SiOP11M!ZERMyiSAM.BDBmInnODB表&作用ANA1.YZE朋MylSAM、BDB和taBCHECKRitMjISAMfOinMDBW用需要注意以下几点:1)对于InnoDB引擎的表来说,通过设置innodb_file_per_table参数,设置InnODB为独立表空间模式,这样每个数据库的每个表都会生成一个独立的ibd文件,用于存储表的数据和索引,这样可以一定程度上减轻InnODB表的空间回收问题。另外,在删除大量数据后,InnoDB表可以通过altertable但是不修改

7、引擎的方式来回收不用的空间,该操作会重建表:mysqMwtableCiIyCngirElMdb;QJOyOK10rowsawi(0.085)RaalkODupliaics:!)Wamingsl)2) ANA1.YZE、CHECK、OPTIMIZE,A1.TERTAB1.E执行期间将对表进行锁定(数据库系统会对表加一个只读锁,在分析期间,只能读取表中的记录,不能更新和插入记录),因此一定注意要在数据库不繁忙的时候执行相关的操作。考点执行计划3. MySQ1.中的索引有什么优点?正确答案:索引(IndeX)是数据库优化中最常用也是最重要的F段之一,通过索引通常可以帮助用户解决大多数的SQ1.性能问

8、题。索引是帮助MySQI,高效获取数据的数据结构,它用于快速找出在某个列中含有某一特定值的行。如果不使用索引,那么MySQ1.必须从第1条记录开始读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,那么MySQ1.就能快速到达一个位置去搜寻数据文件的中间,没有必要看所有数据。索引在MySQ1.中也叫作键(Key)”,是存储引擎用于快速找到记录的一种数据结构。总体来说,索引有如下几个优点:1)索引大大减少了服务器需要扫描的数据量。2)索引可以帮助服务器避免排序和临时表。3)索引可以将随机0变为顺序I/O。考点索引4. MySQ1.有哪些索引种类?正确答案:MySQI.

9、的所有列类型都可以被索引。MyISASM和InnoDB类型的表默认创建的都是BTREE索引;MEMORY类型的表默认使用HASH索引,但是也支持BTREE索引;空间列类型的索引使用RTREE(空间索引)。MVSQ1.中的索引是在存储引擎层中实现的,而不是在服务器层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。MySQ1.目前提供了以卜几种索引:I)BTREE索引:最常见的索引类型,大部分引擎都支持BTREE索引,例如,MyISASMxInnODB、MEMoRY等。2)HASH索引:只有MEMoRY和NDB引擎支持,使用场景简单。3)RTREE索引(空

10、间索引):空间索引是MylSAM的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少。4)FU1.1.TEXT(全文索引):全文索引也是MylSAM的一个特殊索引类型,主要用于全文索引,InnoDB从MySQ1.5.6版本开始提供对全文索引的支持。MySQ1.目前还不支持函数索引,但是支持前缀索引,即对索引字段的前、个字符创建索引,这个特性可以大大缩小索引文件的大小,从而提高性能。但是,前缀索引在排序ORDERBY和分组GROUPBY操作的时候无法使用,也无法使用前缀索引做覆扫描。用户在设计表结构的时候也可以对文本列根据此特性进行灵活设计。考点索引5. 什么是茯盖索引?正确答案:如果一个

11、索引包含(或者说覆盖了)所有满足查询所需要的数据,那么就称这类索引为覆盖索引(CoveringIndex)0索引覆盖查询不需要回表操作。在MySQ1.中,可以通过使用explain命令输出的Extra列来判断是否使用了索引覆盖查询。若使用了索引覆盖查询,则EXtra列包含“Usingindex”字符串。MySQ1.雀询优化器在执行查询前会判断是否有一个索引能执行覆盖查询。覆盖索引能力.效地提高杳询性能,因为覆盖索引只需要读取索引而不用回表再读取数据。覆盖索引有以下一些优点:1)索引项通常比记录要小,所以MySQ1.会访问更少的数据。2)索引都按值的大d,X序存储,相对于随机访问记录,需要更少的

12、I/O。3)大多数据引擎能更好地缓存索引,比如MyISAM只缓存索引。4)卷盖索引对于InnoDB表尤其有用,因为InnoDB使用聚集索引组织数据,如果二级索引中包含查询所需的数据,那么就不再需要在聚集索引中查找了。下面的SQ1.语句就使用了覆盖索引:idSdeaMetIePeIiIicWFPe尔此WS时犯ICO:向fwfile欣EXIm一t一-ft7-f-,一一IISlfHUMrlSUinto皿演Mn冼W25,09:Usirg欣re;M祝i倒考点索引6. 什么是哈希索引?正确答案:哈希索引(HashIndeX)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用。对于每一行,存储引

13、挈计算出了被索引的哈希码(HaShCode),它是一个较小的值,并且有可能和其他行的哈希码不同。它把哈希码保存在索引中,并且保存了一个指向哈希表中的每一行的指针。如果多个值有相同的哈希码,那么索引就会把行指针以链表的方式保存在哈希表的同一条记录中。哈希索引只有MEMoRY和NDB两种引擎支持,MEMORY引擎默认支持哈希索引,如果多个HASH值相同,出现哈希碰撞,那么索引以链表方式存储。若要使InnODB或MyISAM支持哈希索引,那么可以通过伪哈希索引来实现。主要通过增加一个字段,存储HASH值,将HASH值建立索引,在插入和更新的时候,建立触发器,自动添加计算后的HASH值到表里。在查询的

14、时候,在WHERE子句手动指定使用哈希函数。这样做的缺陷是需要维护哈希值。MySQ1.最常用存储引擎InnoDB和MyISAM都不支持HASH索引,它们默认的索引都是BTREE。但是,如果在创建索引的时候定义其索引类型为HASH,那么MySQ1.并不会报错,而且通过SHOWCREATETAB1.E查看该索引也是HASI1.只不过该索引实际上还是BTREE。HASH索引检索效率非常高,索引的检索可以一次定位,不像BTREE索引需要从根节点到枝节点,最后才能访问到叶节点这样多次的I/O访问,所以HASH索引的查询效率要远高于BTREE索引。那么,既然HASH索引的效率要比BTREE高很多,为什么大

15、家不都用HASH索引而还要使用BTREE索引呢?其实,任何事物都是有两面性的,HASH索引也一样,虽然HASH索引效率高,但是HASH索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些:I)HASH索引仅仅能满足“=”“IN”和“V=”查询,不能使用范围查询。由于HASH索引比较的是进行HASH运算之后的HASH值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的HASH算法处理之后的HASH值的大小关系,并不能保证和HASH运算前完全一样。2)优化器不能使用HASH:索引来加速ORDERBY操作,即HASH索引无法被用来避免数据的排序操作。由于HASH索引中存放的是经过HASH计算之后的HASH值,而且HASH值的大小关系并不定和HASH运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。3)MySQI.不能确定在两个值之间大约有多少行。如果将一个MyISAM表改为HASH索引的MEMORY表,会影响一些查询的执行效率。4)只能使用整个关键字来投索一行,即HASH索引不能利用部分索引键杳询。对于组合索引,HASH索引在计算HASH值的时候是组合索引

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!