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

上传人:夺命阿水 文档编号:1416114 上传时间:2024-06-15 格式: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》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题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索引中存放的是经

16、过HASH计算之后的HASH值,而且HASH值的大小关系并不定和HASH运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。3)MySQI.不能确定在两个值之间大约有多少行。如果将一个MyISAM表改为HASH索引的MEMORY表,会影响一些查询的执行效率。4)只能使用整个关键字来投索一行,即HASH索引不能利用部分索引键杳询。对于组合索引,HASH索引在计算HASH值的时候是组合索引键合并后再一起计算HASH值,而不是单独计算HASH值,所以通过组合索引的前面一个或几个索引健进行查询的时候,HASH索引也无法被利用。5)HASH索引在任何时候都不能避免表扫描。HASH索引是

17、将索引键通过HASH运算之后,将HASH运算结果的HASH值和所对应的行指针信息存放于一个HASH表中,由于不同索引键存在相同HASH值,所以即使取满足某个HASH键值的数据的记录条数,也无法从HASH索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。6)HASH索引遇到大量HASH值相等的情况后,性能并不-定就会比BTREE索引高。对于选择性比较低的索引键,如果创建HASH索引,那么将会存在大量记录指针信息和同一个HASH值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。考点索引7. 什么是自适应哈希索引(AdaPtiV

18、eHashIndex)?正确答案:InnODB引擎有一个特殊的功能叫作自适应哈希索引(AdaPtiVeHashIndex)o当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于BTREE索引之上再创建一个哈希索引,这样就让BTREE索引也具有哈希索引的一些优点。例如,快速的哈希查找,这是一个全自动的、内部的行为,用户无法控制或者配置,不过如果有必要,可以选择关闭这个功能(innodb_adaptive_hash_indcx=OFF默认为ON)O通过uSHOWENGINEINNODBSTATUS;w可以看到当前自适应哈希索引的使用情况:INSERTBUFFERANDADAPTIVE

19、HASHINDEXIbufisize1,free1istIenO,segsize2,94mergesmergedoperations:insert280,deletemark0,delete0discardedoperations:insert0,deletemark0,delete0Hashtablesize4425293,nodeheaphas1337buffer(三)174.24hashsearches/s,169.49non-hashsearches/s可以看到自适应哈希索引的使用信息,包括自适应哈希索引的大小、使用情况,每秒使用自适应哈希索引搜索的情况。考点索引8. 什么是前缀索引?

20、正确答案:有时候需要索引很长的字符列,这会让索引变得大且慢,此时可以考虑前缀索引。MySQ1.目前还不支持函数索引,但是支持前缀索引,即对索引字段的前N个字符创建索引,这个特性可以大大缩小索引文件的大小,从而提高索引效率。用户在设计表结构的时候也可以时文本列根据此特性进行灵活设计。前缀索引是-种能使索引更小、更快的有效办法。前缀索引的缺点:在排序ORDERBY和分组GRoIJPBY操作的时候无法使用,也无法使用前缀索引做覆盖扫描,并且前缀索引降低r索引的选择性。索引的选择性是指不重复的索引值(也称为基数,Cardinality)和数据表的记录总数(CoUNT(*)的比值,范围为(0,U.索引的

21、选择性越高则查询效率越高,因为选择性高的索引可以让MySQ1.在查找时过滤掉更多的行。唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。一般情况卜某个前缀的选择性也是足够高的,足以满足查询性能。对于B1.OB、TEXT或者很长的VARCHAR类型的列,必须使用前缀索引,因为MySQ1.不允许索引这些列的完整长度。使用前缀索引的诀窍在于,要选择足够长的前缀以保证较高的选择性,同时又不能太长(以便节约空间)。前缀应该足够长,以使得前缀索引的选择性接近于索引的整个列。换句话说,前缀的“基数”应该接近于完整的列的“基数”。考点索引简单描述在MySQ1.中,索引、唯一索引、主键、联合索引的区别

22、,它们对数据库的性能有什么影响?正确答案:索引、唯一索引、主键、联合索引的区别如下:1)索引:一种特殊的文件(InnQDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。2)唯一索引:普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列只包含彼此各不相同的值,在为这个数据索引创建索引的时候就应该用关键字UNlQE把它定义为一个唯一索引,唯一索引可以保证数据记录的唯一性。3)主键:一种特殊的唯一索引,在一张表中只能定义一个主键索引,逐渐用于唯一标识一条记录,是用关键字PRlM

23、ARYKEY来创建。4)联合索引:索引可以覆盖多个数据列,如IW)EX索引就是联合索引。索引可以极大地提高数据的存询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。考点索引10.在表中建立了索引以后,导入大量数据为什么会很慢?正确答案:对已经建立了索引的表中插入数据时,插入一条数据就要对该记录按索引排序。因此,导入大量数据的时候速度会很慢。解决这种情况的办法是,在没有任何索引的情况插入数据,然后建立索引。考点索引H.MySQI.原生支持的备份方式及种类有哪些?正确答案:MySQ1.原生支持的备份方式有如下几种方式:1)直接拷贝数据文件,必须是MylSAM表,

24、且使用flushtableswithread1。Ck语句,优点是简单方便,缺点是必须要锁定,且只能在同版本的MySQ1.上恢复使用。2)mysqldump,由于导出的是SQ1.语句,所以,可以跨版本恢复,但是需要导入数据和重建索引,恢复用时会较长,如果是MylSAV表,那么同样需要锁表;如果是InnoDB表,那么可以使用-SingIe-transaction参数避免此问题。考点备份恢复12. UySQI.支持的备份类型包括哪些?正确答案:MySQ1.支持的备份类型如下图所示。在段备份(OnlineBackup)热备份(HotBackup):热备份也称为在线备份(OnlineBackup),是指

25、在数据库运行的过程中进行备份,对生产环境中的数据库运行没有任何影响。常见的热备方案是利用mysqldump、XtraBaCkUP等工具进行备份。冷备份(COldBackup):冷备份也称为离线备份(OfflineBackup),是指在数据库关闭的情况下进行备份,这种备份非常简单,只需要关闭数据库,复制相关的物理文件即可。目前,线上数据库一般很少能婚接受关闭数据库,所以该备份方式很少使用。温备份(WarnlBaCkUP):温备份也是在数据库运行的过程中进行备份,但是备份会对数据库操作有所影响。该备份利用锁表的原理备份数据库,由于影响了数据库的操作,故该备份方式也很少使用。2)根据备份文件的种类,

26、备份可以分为如卜两种:物理备份(PhySiCalBackup):物理备份也称为裸文件备份(RawBackup),是指复制数据库的物理文件。物理备份既可以在数据库运行的情况下进行备份(常见备份工具:MySQ1.EnterpriseBaCkUP(商业)、XtraBaCkUP等),也可以在数据库关闭的情况下进行备份。该备份方式不仅备份速度快,而且恢复速度也快,但是由于无法查看备份后的内容,所以只能等到恢复之后,才能检验备份出来的数据是否是正确的。逻辑备份(1.ogiCalBackup):逻辑备份是指备份文件的内容是可读的,该文本一般是由一条条SQ1.语句或者表的实际数据组成。常见的逻辑备份方式有my

27、sqldump、SE1.ECT.INTOOUTFI1.E等。这类备份方法的好处是可以观察备份后的文件内容,缺点是恢复时间往往会很长。逻辑备份的最大优点是对于各种存储引擎都可以用同样的方法来备份:而物理备份则不同,不同的存储引擎有着不同的备份方法。因此,对于不同存储引擎混合的数据库,用逻辑备份会更简单一些。3)根据备份内容,备份可以划分为如下3种:全量备份(FUUBackup):全量备份(完全备份)是指对数据库进行一次完整的备份,备份所有的数据,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。这是一般常见的备份方式,可以使用该备份快速恢复数据库,或者搭建从库。恢第速度也是最快的,但是每

28、次备份会消耗较多的磁盘空间,并且备份时间较长。所以,一般推荐一周做一次全量备份。增量备份(InCremCntalBackup):增量备份也叫差异备份,是指基于上次完整备份或增量备份,对数据库新增的修改进行备份。这种备份方式有利于版少备份时使用的磁盘空间,加快备份速度。但是恢复的时候速度较慢,并且操作相对复杂。推荐每天做一次增量备份。口志备份(Binary1.ogBackup):口志备份是指对数据库二进制口志的备份。二进制志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。该备份方式一般与上面的全量备份或增量备份结合使用,可以使数据

29、库恢复到任意位置。所以,推荐每小时甚至更频繁地备份二进制R志。在生产环境上,一般都会选择以物理备份为主,逻辑备份为辅,加上日志备份,来满足线上使用数据库的需求。考点备份恢任13. 如何从Inysqldump工具中备份的全库备份文件中恢复某个库和某张表?正确答案:恢复某个库可以使用一One-dalabase(简写-0)参数,如卜.:全库备份:rootrhel61hr#mysqIdump-uroot-p-single-transaction-A-master-data=2dump.sql只还原erp库的内容:rootrhe16lhr#mysql-uroot-pMANAGERerp-one-data

30、baseselect豌VCnion;Version:5.7J9却SqDsbodatabases;DauleseIinfonati.schcaI咽IperfonaschaISyS1 .数据库information_schemainformation_schema是信息数据库,是MySQ1.5.0新增的一个数据库,其中保存着关于MySQI.服务器所维护的所有其他数据库的信息。information_schema提供了访问数据库元数据的方式。元数据是关于数据的数据,例如,数据库名或表名、列的数据类型、访问权限等。informationSChema是一个虚拟数据库,有数个只读表,它们实际上是视图,而不

31、是基本表,因此,无法看到与之相关的任何文件。2 .数据库mysql这个是VySQ1.的核心数据库,主要存储者数据库的用户、权限设置、MySQ1.自己需要使用的控制和管理信息。它不可以被删除,如果对MySQ1.不是很了解,那么也不要轻易修改这个数据库里面的表信息。3 .数据库performance_schema这是从MySO1.5.5版本开始新增的一个数据库,主要用于收集数据库服务器性能数据,需要设置参数PerformanCeSChema才可以启动该功能。这个功能从MySQ1.5.6.6开始,默认是开启的(在MySQ1.5.6.6版本以下默认是关闭的),其值为1或0表示启用,为0或OFF表示关闭

32、。需要注意的是,该参数是静态参数,只能写在f中,不能动态修改。4 .数据库sysMySO1.5.7提供了sys系统数据库。SyS数据库结合了information_schema和performance_schema的相关数据,里面包含/一系列的存储过程、百定义函数以及视图来帮MDBA快速地了解系统的元数据信息,为DBA解决性能瓶颈提供了巨大帮助。SyS数据库目前只包含一个表,表名为sys-configo另外需要注意的一点是,在MySQ1.5.7以前还存在一个默认的test库,用于测试,而在MySQ1.5.7及其之后的版本中去掉了该库。18. MySQ1.区分大小写吗?正确答案:在MySQ1.中

33、,一个数据库会时应一个文件夹,数据库里的表则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写敏感。其实,在MySQ1.中,有一个只读的系统变量“loWejCaSe_file_system”,其值反映的正是当前文件系统是否区分大小写。所以,MySQ1.在WindOWS下是不区分大小写的,而在1.inUX下数据库名、表名、列名、别名大小写规则是这样的:1)数据库名与表名是严格区分大小写的,但是,可以在etcf中添加IOWerlcasetablenanes=l,然后重启MySQ1.服务,这样就不区分表名的大小写了。当lowercasetablenames为0时表示区

34、分大小写,为1时表示不区分大小写。2)表的别名是严格区分大小写的。3)列名与列的别名在所有的情况下均是忽略大小写的。4)变量名也是严格区分大小写的。另外需要说明的一点是,VySQ1.在查询字符串时是大小写不敏感的。如果想在查询时区分字段值的大小写,那么字段值需要设置BINARY属性。关键字、函数名、存储过程和事件的名字不区分字母的大小写。例如,abs、bin、now、version,floor等函数和SE1.ECT、WHERE.ORDER、GROUPBY等关键字。触发器的名字要区分字母的大小写。19. 什么是MySQ1.的复制(RePliCatiOn)?正确答案:MySQ1.后建、的豆制功能是

35、构建大型、高性能应用程序的基础。将MySQ1.的数据分布到多个系统上去,这种分布的机制,是通过将MySQ1.的某一台主机的数据复制到其他主机(SIaVeS)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其他服务器充当从服务器。主服务器将更新写入二进制口志文件,并维护文件的一个索引以跟踪口志循环。这些口志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后-次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。当进行复制时,所有对复制中的表的更新必须在主服务器上进行,以避免用户对主服务

36、器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。MySQ1.支持的更制类型有如下几种:D基于语句的复制(逻辑复制)。在主服务器上执行的SQ1.语句,在从服务器上执行同样的语句。MySQ1.默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选择基于行的复制。2)基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从MySQ1.5.0开始支持。3)混合类型的复制。默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。复制主要有3个步骤:1)在主库上把数据更改记录到二进制日志(Binary1.Og)中。2)备库将主库上的日志曳

37、制到自己的中继日志(Relay1.Og)中。3)备库读取中继日志中的事件,并将其重放到备库之上。通过SHOWMASTERSTATUS可以用来查看主服务器中二进制日志的状态,通过SH(MS1.AVESTATUS命令可以观察当前复制的运行状态。20. MySQ1.的第制原理以及流程是什么样的?正确答案:MySQ1.的复制原理:Master上面事务提交时会将该事务的BinlogEvents写入Binlog文件,然后Master将BinlogEvents传到Slave上面,Slave应用该BinlogEvents实现逻辑复制。MySQ1.的复制是基于如下3个线程的交互(多线程复制里面应该是4类线程):

38、DMaster上面的BinlogDump线程,该线程负责将Master的BinlogEvents传到Slave02)SIaVC上面的I/O线程,该线程负责接收MaSter传过来的二进制日志(Binlog),并写入中维日志(ReIay1.Og)。3)SIaVe上面的SQ1.线程,该线程负责读取中继日志(Relay1.Og)并执行。4)如果是多线程竟制,无论是VySQ1.5.6库级别的假多线程还是MariaDB或者5.7的真正的多线程复制,SQ1.线程只做COordinator,只负贡把中继日志(Relay1.og)中的二进制日志(BinIog)读出来然后交给Worker线程,Woker线程负责具体BinIOgEVentS的执行。

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号