暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 8.0 OCP 1Z0-908 考试题解析指南

作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)
大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区联合创始人,荣获Oracle ACE Pro称号,墨天轮MVP,墨天轮年度“墨力之星”,拥有Oracle  OCP/OCM 认证,MySQL 5.7/8.0 OCP认证以及KCA、KCP、KCSM、PCA、PCTA、OBCA等众多国产数据库认证证书,今天和大家一起来看看 MySQL 8.0 OCP 考试题解析指南。欢迎点击下方“JiekeXu DBA之路”公众号名片可关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送给你!后台回复【加群】,添加我个人微信拉你进群交流学习。
就在上周五中午,国内的数据库圈沸腾了,因为 Oracle 官方为了庆祝 MySQL 数据库开源 30 周年特意举办了一个免费考试的活动,从四门考试中任选两门免费考试,详情请参见上一篇文章【是真的,MySQL 30 周年庆!MySQL 8.0 OCP 认证限时免费考】,这意味着你不需要参加培训(本来 MySQL 考试也不需要培训记录就可参加)不需要购买考券即可自行报名参加考试,节省了几千块钱,故此白嫖粉就特别多,一度让 OU 官网瘫痪不能访问。
既然每个人都能参加考试了,那么都是抱着白嫖的心态来的,那么我也不能扫了大家的兴,这里准备把去年初考过的题库和解析分享给大家,因包含图片、代码、网址、中英文等,格式上不太友好,建议打开电脑浏览器观看。

1Choosethebestanswer.

Examinethesestatementsandoutput:          
mysql>GRANTPROXYONaccounting@localhostTO''@'%';mysql>SELECTUSER(),CURRENT_USER(),@@proxy_user;

Whichstatementistrue?          
A)Theuserfailedtodefineausernameandtheconnectingusernamedefaultedto''@'%'.B)Theuserisauthorizedasthersmith@localhostuser.          
C)Theuserisauthenticatedastheanonymousproxyuser''@'%'.          
D)Theuserisloggedinwith--user=accountingasanoption.          
E)Theuserisauthorizedastheaccounting@localhostuser.

AnswerE         

分析:proxy用户创建构成

--createproxyaccount          
CREATEUSER'employee_proxy'@'%'identifiedby'123456';

--createproxiedaccountandgrantitsprivileges;          
CREATEUSER'employee'@'localhost'       identifiedby'123456';          
GRANTALLON*.*TO'employee'@'localhost';

--granttoproxyaccountthe          
GRANTPROXYON'employee'@'localhost'TO'employee_proxy'@'%';  

https://dev.mysql.com/doc/refman/8.0/en/proxy-users.html          
CURRENT_USER()的权限是真正当前作用的用户权限。

2Choosetwo.Whichtwoactionscanobtaininformationaboutdeadlocks?

A)RuntheSHOWENGINEINNODBMUTEXcommandfromthemysqlclient.B)Enabletheinnodb_status_output_locksglobalparameter.          
C)Enabletheinnodb_print_all_deadlocksglobalparameter          
D)RuntheSHOWENGININNODSTATUcommandfromthemysqlclient.

E)Usethesys.innodb_lock_waitsview.   

AnswerC,D

innodb_print_all_deadlocks:https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_print_all_deadlocks 

当启用该选项时,InnoDB用户事务中的所有死锁信息都会记录在mysqld错误日志中。否则,使用SHOW ENGINE INNODB STATUS命令,只能看到最近一次死锁的信息。偶尔的InnoDB死锁并不一定是一个问题,因为InnoDB会立即检测到这种情况,并自动回滚其中一个事务。如果应用程序没有适当的错误处理逻辑来检测回滚并重试其操作,则可以使用此选项对发生死锁的原因进行故障排除。大量的死锁可能表明需要重构发出DMLSELECT…FOR UPDATE语句用于多个表,以便每个事务以相同的顺序访问表,从而避免死锁条件。      
Whenthisoptionisenabled,informationaboutalldeadlocksinInnoDBusertransactionsisrecordedinthemysqlderrorlog.Otherwise,youseeinformationaboutonlythelastdeadlock,  usingtheSHOWENGINEINNODBSTATUScommand.       

3Choosethebestanswer.          
Examinethisstatement,whichexecutessuccessfully:    

    CREATE TABLE world.city(ID int NOT NULL AUTO INCREMENT,
    Name char(35NOT NULL DEFAULT ' ',
    CountryCode char(3NOT NULL DEFAULT ' ',
    District char(20NOT NULL DEFAULT ' ',
    Population int NOT NULL DEFAULT '0',
    PRIMARY KEY (ID),
    REY CountryCode(CountryCode)
    )ENGINE=InnoDB;

    Youwanttoimprovetheperformanceofthisquery:

      SELECT Name
      FROM world.city
      WHERE Population BETWEEN 1000000 AND 2000000;

      Whichchangeenablesthequerytosucceedwhileaccessingfewerrows?A)ALTERTABLEworld.cityADDINDEX(Name);          
      B)ALTERTABLEworld.cityADDSPATIALINDEX(Name);          
      C)ALTERTABLEworld.cityADDFULLTEXTINDEX(Name);          
      D)ALTERTABLEworld.cityADDFULLTEXTINDEX(Population);E)ALTERTABLEworld.cityADDSPATIALINDEX(Population);          
      F)ALTERTABLEworld.cityADDINDEX(Population);

      AnswerF

      分析:

        mysql>ALTER TABLE city ADDSPATIAL INDEX(Population);           
        ERROR 1687 (42000): A SPATIAL index may only contain a geometrical type column 
        mysql> ALTER TABLE world.city ADD INDEX(Population); 
        Query OK, 0 rows affected (0.09 sec)

              

        4Choosetwo.          
        User`fwuser`@`localhost`isregisteredwiththeMySQLEnterpriseFirewallandhasbeengrantedprivilegesfortheSAKILAdatabase.          
        Examinethesecommandsthatyouexecutedandtheresults:

        mysql>SELECTMODEFROMINFORMATION_SCHEMA.MYSQL_FIREWALL_USERS          
        WHEREUSERHOST='fwuser@localhost';

                 

        mysql>SELECRULFROM           
        INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST 

        WHEREUSERHOS'fwuser@localhost';     

        Youthenexecutethiscommand:          
        mysql>CALLmysql.sp_set_firewall_mode('fwuser@localhost','RESET');          
        Whichtwoaretrue?

        A)Thefwuser@localhostaccountisremovedfromthemysql.usertable.          
        B)Theinformation_schema.MYSQL_FIREWALL_WHITELISTtableistruncated.C)Thewhitelistofthefwuser@localhostaccountistruncated.           
        D)Themysql.firewall_userstableistruncated.          
        E)Thefirewallresetsalloptionstodefaultvalues.          
        F)Thefwuser@localhostaccountmodeissettoDETECTING.          
        G)Thefwuser@localhostaccountmodeissettoOFF.

        Answer C G      

        Whenaprofileisassignedanyoftheprecedingmodevalues,thefirewallstoresthemodeintheprofile.Firewallmode-settingoperationsalsopermitamodevalueofRESET,butthisvalueisnotstored:settingaprofiletoRESETmodecausesthefirewalltodeleteallrulesfortheprofileandsetitsmodetoOFF.


        RESET概要文件设置RESET模式会导致防火墙删除概要文件的所有规则并将其模式设置OFFRESET时,除了Firewall,同也会该账之前练学的白单全清空,这样次再采用Firewall就需重头始了,除非也不了,则不议这做。https://dev.mysql.com/doc/refman/8.0/en/firewall-usage.html
        b指定表是的,但中保了全profil并不是全部被 truncateCALL mysql
        .sp_set_firewall_mode
        (user, 'RESET');

        The reset operation causes the firewall to delete all rules for the profile and set its mode to OFF
        重置操作将导致防火墙删除该配置文件的所有规则,并将其模式设置为“OFF”         

        5Choosefour.

        Anewlydeployedreplicationmasterdatabasehasa10/90readtowriteratio.            
        Thecompletedatasetiscurrently28Gbutwillneverfluctuatebeyond+-10%.            
        ThedatabasestoragesystemconsistsoftwolocallyattachedPCI-EEnterprisegradedisks

        (mountedas/data1and/data2)            
        TheserverisdedicatedtothisMySQLInstance.    

        新部署的复制主数据库的读写比率为10/90。

        完整的数据集目前是28G,但永远不会波动超过+-10%。

        数据库存储系统由两个本地连接的PCI- E企业级磁盘组成

        (挂载为/data1和/data2)

        服务器专用于这个MySQL实例。

        Systemmemorycapacityis64G.           
        Themy.cnffilecontentsaredisplayedhere:

        [mysqld]

        datadir=/data1/          
        innodb_buffer_pool_size=28G          
        innodb_log_file_size=150M

        Whichfourchangesprovidethemostperformanceimprovement,withoutsacrificingdata       

        integrity?  哪四个更改在不牺牲数据完整性的情况下提供了最大的性能改进?

        A)innodb-doublewrite=off          
        B)innodb_log_group_home_dir=/data2/           
        C)innodb_log_file_size=1G           
        D)innodb_undo_directory=/dev/shm          
        E)log-bin=/data2/           
        F)innodb_flush_log_at_trx_commit=0          
        G)sync_binlog=0          
        H)innodb_buffer_pool_size=32G           
        I)disable-log-bin

        Answer:BCEH          
        分析:不牺牲数据完整性的情况下提供了最大的性能改进

        https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_undo_directory

        InnoDB创建undo表空间的路径。通常用于将撤销表空间放在不同的存储设备上。   

        没有默认值(它是NULL)。如果变量innodb_undo_directory未定义,则在data目录下创建undo表空间。            

        MySQL实例初始化时创建的默认undo表空间(innodb_undo_001和innodb_undo_002)总是驻留在由innodb_undo_directory变量定义的目录中。 

        如果没有指定不同的路径,使用CREATE Undo TABLESPACE语法创建的Undo表空间将在innodb_undo_directory变量定义的目录中创建。

        --innodb-doublewrite=value (≥ 8.0.30)

        --innodb-doublewrite[={OFF|ON}] (≤ 8.0.29)


          https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_doublewrite

          innodb_doublewrite变量控制doublewrite缓冲。在大多数情况下,默认情况下启用双写缓冲。

          MySQL 8.0.30之前,您可以在启动服务器时将innodb_doublewrite设置为ONOFF,以分别启用或禁用doublewrite缓冲。从MySQL 8.0.30开始,innodb_doublewrite也支持DETECT_AND_RECOVERDETECT_ONLY设置。    

          DETECT_AND_RECOVER设置与ON设置相同。使用此设置,将完全启用doublewrite缓冲区,将数据库页面内容写入doublewrite缓冲区,在恢复期间访问该缓冲区以修复不完整的页面写入。

          使用DETECT_ONLY设置,只将元数据写入doublewrite缓冲区。数据库页内容不写入到doublewrite缓冲区,并且恢复不使用doublewrite缓冲区来修复不完整的页写。这个轻量级设置仅用于检测不完整的页面写。

          MySQL 8.0.30以后支持动态修改innodb_doublewrite设置,使doublewrite缓冲区在ON, DETECT_AND_RECOVERDETECT_ONLY之间。MySQL不支持在启用doublewrite bufferOFF的设置之间进行动态更改,反之亦然。   

          如果双写缓冲区位于支持原子写的Fusion-io设备上,则自动关闭双写缓冲区,使用Fusion-io原子写方式写数据文件。但是,要注意innodb_doublewrite设置是全局的。禁用双写缓冲区后,所有数据文件(包括不在Fusion-io硬件上的数据文件)都将禁用双写缓冲区。该特性仅在Fusion-io硬件上支持,且仅在Linux操作系统的Fusion-io NVMFS上启用。为了充分利用这个特性,建议将innodb_flush_method设置为O_DIRECT

                    

          6Choosethebestanswer.          
          YouarehavingperformanceissueswithMySQLinstances.ThoseserversaremonitoredwithMySQLEnterpriseMonitor.          
          UsingQueryAnalyzer,wheredoyoubegintolookforproblemqueries?

          使用查询分析器,从哪里开始查找问题查询?

          A)Sortthe"Exec"columnandcheckforSQLquerieswitlowQuerResponsTimindex (QRTi)values. “Exec”列进行排序,并检查具有低查询响应时间索引的SQL查询(QRTi)值。

          B)LookforquerieswithlowtotallatencytimesintheLatencysectioninthetimesseriesgraph.C)Sortthe"Exec"columnandcheckforSQLquerieswithhighQueryResponseTimeindex(QRTi)values.          
          D)Lookforquerieswithbigprolongedspikesinrowactivity/accessgraphinthetimesseriesgraph.

          Answser          
          https://dev.mysql.com/doc/mysql-monitor/8.0/en/mem-features-qrti.html      

          QRTi代表 Query Response Time index  查询响应时间索引。它是对每个查询的服务质量度量,并使用Apdex公式进行计算:Wikipedia上的Apdex

          7Choosethebestanswer.          
          YouwanttologonlythechangesmadetothedatabaseobjectsanddataontheMySQLsystem.Whichlogwilldothisbydefault?     

          A)slowquerylog

          B)binarylog

          C)errorlog

          D)generalquerylog

          E)auditlog  

                     AnswserB  

          8Choosetwo.

          Identifytwowaystosignificantlyimprovedatasecurity.

          确定两种显著提高数据安全性的方法          
          A)Configuremysqldtorunasthesystemadminaccount,suchasroot.          
          B)Useaprivatenetworkbehindafirewall.

          C)Configuremysqldtouseonlynetworkeddisks.          
          D)ConfigureMySQLtohaveonlyoneadministrativeaccount.          
          E)Configuremysqldtouseonlylocaldisksorattacheddisksandtohaveitownaccountinthehostsystem.

          mysqld配置为只使用本地磁盘或附加磁盘,并在主机系统中拥有自己的帐户。

                      Answer:BE
                      分析:网络隔最好,D的问题administrator这个权限太大了,应该有多个

          administrativeaccount,每个只有部分权限。       

          9Choosetwo.          
          WhichtwostatementsaretrueaboutMySQLEnterpriseBackup?    

          A)Itcreateslogicalbackups.          

          B)Itsupportsbackinguponlytablestructures.          
          C)Itcanperformhotorwarmbackups. 热备份          
          D)ItsupportsbackupofaremoteMySQLsystem.          
          E)ItsupportsrestoringtoaremoteMySQLsystem.          
          F)Itsupportsthecreationofincrementalbackups. 增量备份

            https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/

            MySQL Enterprise Backup 8.0.35MySQL 8.0.35的备份工具。mysqlbackup它是一个多平台、高性能的工具,提供丰富的功能,如”(在线)备份、增量和差异备份、选择性备份和恢复、支持直接云存储备份、备份加密和压缩,以及许多其他有价值的功能。虽然针对InnoDB表进行了优化,但MySQL企业备份能够备份和恢复由MySQL支持的任何存储引擎创建的各种表。它的读写进程的并行性(在独立的多线程中执行)及其块级并行性(不同的线程可以在单个文件中读取、处理或写入不同的块)允许以极快的速度完成备份和恢复过程,并且与使用mysqldump等工具进行逻辑备份相比,通常具有显著的性能提升。https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-performance-space-overview.html    

            Answer:CF

            10Choosethebestanswer.

            Examinethesecommands,whichexecutesuccessfullyontheic1host:          
            mysqlsh>dba.createCluster('cluster1',{memberWeight:35})          
            mysqlsh>varmycluster=dba.getCluster()          
            mysqlsh>mycluster.addInstance('ic@ic2',{memberWeight:25})          
            mysqlsh>mycluster.addInstance('ic@ic3',{memberWeight:50})          
            Nowexaminethisconfigurationsetting,whichisthesameonallnodes:      
            group_replication_consistency=BEFORE_ON_PRIMARY_FAILOVER      
            Whichstatementistrueifprimarynodeic1fails?      
            A)Nodeic2becomesthenewprimaryandexistingtransactionsareconsideredstaleandrolledback.          
            B)Nodeic3becomesthenewprimaryandexistingtransactionsareconsideredstaleandrolledback.          
            C)Nodeic3becomesthenewprimaryandisignoreduntilanybacklogoftransactionsis completed. 节点ic3成为新的主节点,并被忽略,直到所有积压的事务完成          
            D)Onlytwonodesremainsotheelectionprocessisuncertainandmustbedonemanually. 

                    E)Nodeic2becomesthenewprimaryandisignoreduntilanybacklogoftransactionsis          completed

            https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_consistency    

            该系统变量的值可以在组复制运行时更改。group_replication_consistency是一个服务器系统变量,而不是特定于Group Replication插件的变量,因此更改不需要重新启动Group Replication即可生效。修改system变量的session值立即生效,修改global值对修改后启动的新会话生效。修改这个系统变量的全局设置需要GROUP_REPLICATION_ADMIN权限。

            Group_replication_consistency控制组提供的事务一致性保证。您可以配置全局一致性或每个事务的一致性。Group_replication_consistency还配置单个主组中新当选的主使用的fencing机制。对于只读(RO)和读写(RW)事务都必须考虑变量的影响。下面的列表显示了这个变量的可能值,按照增加事务一致性保证的顺序:    

            group-replication-consistency =
            BEFORE_ON_PRIMARY_FAILOVER

            新的RO或RW事务与新选出的正在从旧的primary应用积压的primary进行保存(不应用),直到任何积压被应用。这确保了在发生主故障转移时,无论有意还是无意,客户机总是可以看到主服务器上的最新值。这保证了一致性,但意味着客户端必须能够在应用积压的情况下处理延迟。通常这种延迟应该是最小的,但确实取决于积压的大小。

            group-replication-consistency = 
            EVENTUAL

            默认值

            RORW事务在执行之前都不等待前面的事务被应用。这是添加此变量之前组复制的行为。RW事务不等待其他成员应用事务。这意味着事务可以先于其他成员外部化到一个成员上。这还意味着,在发生主故障转移的情况下,在应用之前的主事务之前,新的主服务器可以接受新的RORW事务。RO事务可能导致过时的值,RW事务可能由于冲突导致回滚。

            group-replication-consistency = 
            BEFORE

            RW事务在应用之前等待所有前面的事务完成。RO事务在执行之前等待所有前面的事务完成。这确保该事务仅通过影响事务的延迟来读取最新的值。通过确保只在RO事务上使用同步,这减少了每个RW事务上的同步开销。这个一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。

            group-replication-consistency = 
            AFTER

            RW事务等待,直到其更改已应用于所有其他成员。该值对RO事务没有影响。此模式确保在本地成员上提交事务时,任何后续事务都会读取任何组成员上的写入值或最近的值。对于主要用于RO操作的组使用此模式,以确保应用的RW事务在提交后被应用到任何地方。您的应用程序可以使用它来确保后续的读取获取最新的数据,其中包括最新的写入。通过确保只在RW事务上使用同步,这减少了每个RO事务上的同步开销。这个一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。    

            group-replication-consistency =

            BEFORE_AND_AFTER

            RW事务等待1)在应用之前所有前面的事务完成,2)直到它的更改应用到其他成员上。RO事务在执行之前等待所有前面的事务完成。这个一致性级别还包括BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证

            Answer:C

            英文考试题不算特别多,但一篇文章肯定也写不完,由于篇幅问题,就先选前 10 道题,还没看的可以看看上面题和我个人总结的详细解析,如有问题和需求欢迎一起交流讨论。另外上周五我们也新开了几个 MySQL OCP 考试互助群,由于异常火爆,没法自动加入了,感兴趣的可以添加我个人微信,拉你进群一起交流。

            最后说一下这篇文章要是阅读量还可以,伙伴们还有这方面的需求,可以多多点 赞、转  发支持一下,晚上可以视频号分享一下考试备考经验、注意事项以及从零到一如何注册考试、预约考试和考试后查看证书等事项。欢迎关注我的视频号一起来聊聊。

            欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
            ——————————————————————————
            公众号:JiekeXu DBA之路
            墨天轮:https://www.modb.pro/u/4347
            CSDN :https://blog.csdn.net/JiekeXu
            ITPUB:https://blog.itpub.net/69968215
            腾讯云:https://cloud.tencent.co/developer/user/5645107
            ——————————————————————————


            2024 年公众号 JiekeXu DBA之路历史文章合集

            2023 年公众号 JiekeXu DBA之路历史文章合集

            2022 年公众号 JiekeXu DBA之路历史文章合集

            2021 年公众号历史文章合集

            文章转载自青年数据库学习互助会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论