暂无图片
暂无图片
7
暂无图片
暂无图片
3
暂无图片

mysql积累题库积累

落枫0907 2023-08-11
2227
  1. MySQL若要监控TOP SQL语句,一般需要打开以下哪些配置选项? 

A、setup_consumers表的events_transactions_current

 B、setup_consumers表的statements_digest 【正确答案】 

C、setup_instruments表的statement/sql/select 【正确答案】

D、setup_consumers表的events_statements_current/events_statements_history 【正确答案】 

【答案解析】statement/sql/select 用于采集相关SQL语句的执行信息。 events_statements_current/events_statements_history:用于记录当前/历史语句的执行信息到相关表中。 statements_digest:用于对相应SQL语句按照DIGEST值汇总到events_statements_summary_by_digest表中,因此也是分析TOPSQL主要的参考表。 events_transactions_current:用于记录当前正在执行的事务信息,无法分析TOP SQL语句。


某单位制定灾备标准时,希望在灾难发生后能够在1小时内系统恢复成对外可服务的状态,这个指标指的是:

RTO

RPO


对4个表进行连接操作,这几个表之间一般(不考虑优化器的改写)最少几个关联条件可以不产生笛卡儿积?C

A5

B2

C3

D4


在 MySQL 8.0.35 中启动时设置关于 binlog 保留策略的两个参数如下: expire_logs_days = 15 binlog_expire_logs_seconds = 2592000 那么实际上生效的 binlog 将被保留多少天?C

A15

B2592

C30

D259



对于Flashback Database操作如下哪些命令不需要?DF

A

Shutdown

B

Alter database open resetlogs

C

Startup mount

D

Alter database open readonly

E

Flashback database to . . .

F

Recover database until . . .


以下哪些条件,是数据库生成TOP 频率直方图的先决条件?AB

A按各唯一值所对应的行数从多至少排序后,排名前N(直方图中的桶数)的唯一值的行数占总行数的比重大于等于 (1-(1/n))*100

estimate_percent传入的参数为默认的auto_sample_size.

C目标列上的数据是分布不均匀的。

D目标列中的唯一值数量(NDV)小于等于直方图中的桶数n。


在MySQL 8中,以下哪些选项可以用来连接两个或多个表?ACD

A

OUTER JOIN

B

UNION ALL

C

LEFT JOIN

D

RIGHT JOIN


在以下MySQL 8.0官方提供的集群技术中,可以不借助第三方工具而实现自动故障切换(failover)的集群技术有哪些?ACE

A

MySQL NDB Cluster 8.0

B

MySQL InnoDB ReplicaSet

C

MySQL InnoDB Cluster

D

MySQL Replication

E

MySQL Group Replication

答案解析

参考文档: 

MySQL Group Replication: https://dev.mysql.com/doc/refman/8.0/en/group-replication-background.html 

MySQL Replication: https://dev.mysql.com/doc/refman/8.0/en/replication.html 

MySQL InnoDB Cluster: https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-introduction.html 

MySQL InnoDB ReplicaSet :https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-replicaset-introduction.html 

MySQL NDB Cluster 8.0: https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-overview.html



在可重复读(Repeatable read)事务隔离机制下,下面那种情况不会发生?AB

A不可重复读

B脏读

C幻读


EMP表,它不是分区的,也不是索引组织表。以下SQL语句: ALTER TABLE emp DROP COLUMN first_name; 哪两个陈述是正确的AC

A可以删除FIRST_NAME列,即使它是PRIMARY KEY。

B如果FIRST_NAME列不包含任何数据,那么它将被删除。

C如果表中还有一个或多个其他列,那么FIRST_NAME列将被删除。

D如果将SET UNUSED选项添加到上述SQL语句中,则可以回滚FIRST_NAME列。

答案解析

不管列上有没有数据,删除列的命令都可以正常执行。 set unused的列无法访问,无法使用rollback撤销unused设置


ORDER BY默认排序方向为升序


为了防止主机房出现故障,需要将整个数据库在另一个机房或城市保存一份副本,并尽可能保证两个机房之间数据一致的能力叫做:容灾


create table t1( id int not null auto_increment, 

                         name varchar(10) unique, 

                         primary key(id) 

                        ) engine=innodb;


insert into t1 values(1,'sj'); 

insert into t1(name) values('ly'),('ww'),('zs'); 


 delete from t1; 

insert into t1 values(0,'000'); 

insert into t1 values(1,'111');

 insert into t1(name) values('222') 

 select * from t1; 此时3行的ID分别是多少?

A.5 1 2

B.5 1 6

C.插入有报错,不允许这样插入

D.0 1 2

答案解析

delete删除所有4条记录后,自增列计数,并不会重新归0,也就是说,下一条insert的记录,自增列的值会是5。 含自增列的表,插入时可以手动指定自增列的值,但不能与已有值冲突,也可以使用系统默认自增列的值。 如果手动指定自增列的值是0或者NULL,MySQL会视为无效,并使用系统默认自增列的值。 如果使用系统默认自增列的值,会从当前最大值开始往后增加。


以下关于where和having子句的说法哪些是正确的?AC

A    HAVING子句只能用于限制组

B    WHERE子句可用于限制行和组

C    WHERE子句只能用于限制行

D    HAVING子句可用于限制行和组


在MySQL中,同一个会话里面,创建两张表create table t(id int primary key) engine=innodb;create temporary table t(id int) engine=myisam; 

请问执行drop table t;会删除哪张表?D

A表被全部删除

B执行报错,Unknown table t

C删除innodb引擎的表

D删除myisam引擎的表

原因不在存储引擎,而是临时表;

https://dev.mysql.com/doc/refman/5.7/en/temporary-table-problems.html

  • If a TEMPORARY is created with the same name as an existing non-TEMPORARY table, the non-TEMPORARY table is hidden until the TEMPORARY table is dropped, even if the tables use different storage engines.


在MySQL中,以下哪些方法可以查看视图(View)的定义?ABD

A

查询information_schema.views;

B

show create view view_name;

C

查询information_schema.tables

D

show create table view_name;


mysql判断字段为null的写法有哪两种?AC

A

<=> null

B

= ''

C

is null

D

= null


关于mysql 8中使用DATE_ADD函数正确的是: SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);A

A

2008-02-02

B

2008-2-31

C

2008-2-28

D

2008-2-29


InnoDB存储引擎是面向行的(row-oriented),也就是说数据的存放按行进行,每个页存放的行记录也是有硬性定义的,当页的默认大小是16k时,页中最多存放(D)行的记录?

A

8192行

B

16384行

C

1600行

D

7992行


以下描述中,哪一项符合数据库技术发展的顺序?D

A

关系型数据库 ( RDBMS ) -> HTAP -> OLTP -> OLAP

B

NOSQL -> SQL -> NewSQL -> OLAP -> HTAP

C

NOSQL -> 关系型数据库 ( RDBMS ) -> NewSQL -> HTAP

D

关系型数据库 ( RDBMS ) -> NOSQL -> NewSQL -> HTAP


You want to log only the changes made to the database objects and data on the MySQL system. Which log will do this by default?E

A

general query log

B

audit log

C

slow query log

D

error log

E

binary log


有以下查询: select t1.name from t1,t2 where t2.id = t1.id。 如果想让优化器首先访问T2,之后在关联T1。 可以通过下面哪种写法?BCD

A

select /*+ JOIN_FIXED_ORDER */t1.name from t2 JOIN t1 on t1.id = t2.id;

B

select /*+ JOIN_PREFIX(t2) */t1.name from t2 JOIN t1 on t1.id = t2.id;

C

select /*+ JOIN_ORDER(t2, t1) */t1.name from t2 JOIN t1 on t1.id = t2.id;

D

select t1.name from t2 STRAIGHT_JOIN t1 on t1.id = t2.id;

 JOIN_FIXED_ORDER :需要加括号 

JOIN_ORDER(t2, t1) :代表t2关联t1 

JOIN_PREFIX(t2) :代表优先访问t2,而本例中只有两个表,故可以实现t2关联t1的效果。

有以下查询: select t1.name from t1,t2 where t2.id = t1.id。 如果想让优化器首先访问T2,之后在关联T1。 可以通过下面哪种写法?C

A

select /*+ STRAIGHT_JOIN */t1.name from t2 join t1 on t2.id = t1.id;

B

select /*+ STRAIGHT_JOIN(t2,t1) */t1.name from t2 join t1 on t2.id = t1.id;

C

select t1.name from t2 STRAIGHT_JOIN t1 on t1.id = t2.id;

D

select /*+ STRAIGHT_JOIN(t2,t1) */t1.name from t2 , t1 where t2.id = t1.id;



数据库应用程序可以不经过数据库管理系统而直接读取数据库文件:FALSE


关于MySQL中performance_timers表的描述,以下说法正确的是?B

暂无图片

A该表可以增加或删除记录。

B该表记录performance_schema中可用的事件计时器。

C该表可以通过TRUNCATE语句删除相关数据。

D记录了哪些就代表当前performance_schema使用了哪些计时器。


当在MySQL中创建一个新的数据库时,以下哪个命令是正确的?A

A

CREATE SCHEMA new_database;

B

CREATE new_database;

C

CREATE TABLE new_database;

D

CREATE DATABASE 'new_database';



MySQL中,以下语句错误的是?B

A

alter table emp change addcolumn addcolumn int;

B

alter table emp delete column addcolumn;

C

alter table emp add column addcolumn int;

D

alter table emp modify column addcolumn char(1);


下面关于union和union all说法正确的是?CD

union不会过滤重复的记录

union all会过滤重复的记录

union会过滤重复的记录

union all不会过滤重复的记录


衡量OLTP系统的测试指标包括:CD

A

qphH

B

qps

C

tpmC

D

Pric/tmpC


命令行登录mysql的时候,以下哪一个选项指定连接的端口号?A

-P

-h

-u 

-p


关于备份,下面论述中正确的是?ABC

A备份出来的数据也有丢失的风险,所以在做备份要考虑备份数据的生命周期,保证有多个可用的数据备份。

B全备是增量备份和差异备份的基础,没有全备,无法进行增量备份或差异备份。

C全备份的周期要根据系统的整体容量和可以使用的时间窗口来综合评估,不能盲目追求高频次的全备份。

D增量备份就是在全量备份的基础上每次备份出增加的那部分数据。




下面选项属于NOSQL数据库的是:ABCD

A键值数据库

B列分组数据库

C文档数据库

D图数据库



当SQL需要访问的数据块正在被另一个会话从磁盘读到内存中将会导致以下哪一个等待事件的发生?A

read by other session

db file sequential read

buffer busy wait

log file sync


多事务的并发进行一般会造成哪些问题?

幻读

不可重复读

脏读


某数据库想对权限进行规划,那么以下建议中,正确的有?ABC

A在实际工作中,如果有两个以上的用户具有相同的对象权限,则建议将这几个用户规划为一个角色,并将这些权限赋予此角色。

B系统管理员可以将某些数据库对象的所有权限赋予某个用户,也可以将某些数据库对象的部分权限分别赋予不同的用户。

C从安全性考虑,系统权限应该分别赋予可信赖的用户。

D系统权限可以任意赋予给用户。


下列关于Function(函数)的描述中,正确的选项有?ABC

A完成特定功能的SQL语句集合

B可以减少数据库开发人员的重复工作量

C可以被重复调用

D无需被编译就可以运行


下面哪个问题是分区解决不了的:C

AInsert慢

BSelect慢

C行迁移

D热块问题


MySQL当返回的数据量超过全表多少百分比的时候才进行全表扫描?D

A43%~50%

B60%~80%

C10~15%%

D25%~30%

MySQL 5.7中 emp表创建联合索引deptno,ename,job,那可以用该索引的查询字段会有哪些?BCD

A

ename

B

deptno

C

deptno,ename,job

D

deptno,ename


MySQL数据库要存储Emoji表情、生僻的汉字等,需要选择哪种字符集?B

A

utf8

B

utf8mb4

C

utf8mb3

D

GBK


下面MySQL哪种数字数据类型不可以存储数据256?D

A

smallint

B

bigint

C

int

D

tinyint




下面哪些扫描方式支持多块读:AB

A 索引快速全扫描 B 全表扫描 C 索引范围扫描 D 索引全扫描

全表扫描,索引快速全扫描是多块读,还有 TABLE ACCESS BY ROWID RANGE:ROWID 范围扫描,同一个块的 ROWID 是连续的,同一个区的 ROWID 也是连续的,所以也是多块读。其余的访问方式都是单块读


在8.0环境有以下查询: select /*+ NO_INDEX(emp emp_deptno) */ * from emp USE INDEX(emp_deptno) where deptno=20; 

其中emp_deptno索引为deptno列索引。 请问,该SQL如何访问数据?BC

A无法确定

B可能走emp_deptno之外的其他索引

C不走emp_deptno索引

D走emp_deptno索引


下面哪些扫描方式的结果是有序的:AD

A索引全扫描

B索引快速全扫描

C全表扫描

D索引范围扫描


以下哪些不是mysql 8.0中的新特性?A

A索引反向扫描

B索引跳扫(8.0.13)

C窗口函数(8.0)

D不可见索引(8.0)


使用CREATE TABLE 语句的(FULLTEXT)子句,在创建基本表时可以启用全文本搜索



下面哪些操作可以提升MySQL主实例的查询性能?CD

A将innodb_flush_log_at_trx_commit从1改成2

B将rpl_sync_master_enabled从1改成0

C将sort_buffer_size从1M改成4M

D将innodb_buffer_pool_size从10G改成12G


MySQL中,预设的拥有最高权限超级用户的用户名为?

root@'localhost'

在关系数据库中,为了简化用户的查询操作,而又不增加数据的存储空间,则应该创建的数据库对象是A

A

View(视图)

B

Cursor(游标)

C

Table(表)

D

Index(索引)



以下描述中对mysql里mgr描述正确的有哪些?BCD

A唯一建更新的提供单主模式和多主模式,单主模式在主库宕机后能够自动选主,所有写入都在主节点进行,多主模式支持多节点写入。最多支持7个主节点

B基于分布式Paxos的xcom协议实现组复制,保证数据一致性

CXCOM是单线程驱动,无多线程能力,通信流需要额外的一次TCP协议栈,实现了Batching和Pipelining

DMGR组件里包含Capture,Apply ,recovery,GCS API,API,Communication Engine


关于MySQL中setup_timers表的描述,以下说法正确的是? AB

A 该表中的数据来源于performance_timers表中的数据。 

B setup_timer表记录了当前performance_schema使用的计时器信息。 

C 对该表修改后不会立刻影响监控,需要重启数据库。 

D 该表可以通过增删改查调整计时器数据。 

 答案解析 setup_timer表记录了当前performance_schema使用的计时器信息。该表数据来源于performance_timers表中的数据。 

因此只能修改相应的TIMER_NAME值,不能增加或删除记录。只支持修改和查询。 对该表的修改会立刻影响监控。但正在执行的事件可能会受到一定影响。

为了避免修改计时器导致的收集时间信息不准确,建议修改后使用TRUNCATE TABLE语句来重置performance_schema下的相关表的数据。


在 MySQL 8.0 的那个版本中增加了克隆插件?C

A8.0.28

B8.0.12

C8.0.17

D8.0.21

要查看MySQL指定SQL的真实执行计划及实际资源开销,可以通过以下哪个命令?C

A.EXPLAIN FORMAT=json

B.EXPLAIN FORMAT=TREE

C.EXPLAIN ANALYZE

D.explain extended


MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生(ABC )

A开启swap。

B降低并发,避免查询分组排序和更多table cache。

C适当调低innodb_buffer_pool_size大小,5.7之前需要重启MySQL服务。

D将一个实例下库表拆成多个库表(分库分表)。


在MySQL中,以下哪个函数可以用于将字符串转换为日期类型(DATE)?

A

CAST()

B

TO_DATE()

C

CONVERT()

D

STR_TO_DATE()

答案解析

STR_TO_DATE() 函数是 MySQL 特定的函数,用于将字符串转换为日期类型。它的用法和Oracle的TO_DATE() 函数类似,但语法略有不同。


mysql在innodb_flush_log_at_trx_commit=1的配置下,以下说法错误的是?ACD

A一个事务回滚的时候,与它相关的redo log一定还没写入到磁盘

B一个事务提交的时候,与它相关的redo log一定已经写入到磁盘

C一个事务回滚的时候,与它相关的redo log一定已经写入到磁盘

D一个事务还没有提交的时候,与它相关的redo log一定还没写入到磁盘


MySQL中有以下SQL,使用了多个hint提示: 

explain SELECT * FROM emp IGNORE INDEX (emp_job) USE INDEX (emp_job) USE INDEX (emp_job2) where job ='SALESMAN'; 

请问,最终生效的hint是哪个?D

A、USE INDEX (emp_job)

B、均不生效

C、USE INDEX (emp_job)、USE INDEX (emp_job2)

D、USE INDEX (emp_job2)

同一个表中出现多个USE/FORCE/IGNORE时,会优先应用USE/FORCE的作用,之后再处理IGNORE的作用。 

因此不论出现顺序如何,最终IGNORE INDEX (emp_job)会抵消USE INDEX (emp_job)的作用。


有以下SQL: explain SELECT * FROM emp FORCE INDEX (emp_mgr) where job ='SALESMAN'; 其中JOB列上有索引。 

创建了mgr列上索引: CREATE INDEX emp_mgr on emp(mgr); 其他列上无索引。 

请问,上述SQL最终会采用何种访问方式?B

A报语法错误

B全表扫描

C使用JOB列索引

D使用emp_mgr索引

如果index_list中的索引与查询完全无关,则也会让优化器放弃使用该索引及相关的其他所有索引。使用全表扫描访问。


mysql中,有以下SQL: explain SELECT * FROM emp FORCE INDEX () where job ='SALESMAN'; 其中JOB列上有索引。

其他列上无索引。请问,上述SQL最终会采用何种访问方式B
A不确定
B报语法错误
C全表扫描

D使用JOB列索引

FORCE INDEX:当index_list为空时,会出现语法错误


MySQL事物的开始和结束命令分别是什么?C

A

start transaction和break

B

start transaction和end

C

start transaction和commit

D

start transaction和rollback

MySQL数据库中,以下哪些方式可以授权用户远程登录?ABCDE

A

update mysql.user set host = '%' where user = '用户名'; flush privileges;

B

grant all on *.* to 'user1' identified by '';

C

create user user1 identified by ""

D

create user user1@'%' identified by ""

E

grant all on *.* to 'user1'@'%' identified by '';


关于mysql的grant/revoke权限操作,正面说法正确的是?AB

A当给A账号grant添加select权限时,A账号已经存在的连接,立即生效

B当给A账号revoke去掉select权限时,A账号已经存在的连接,立即生效

C当给A账号grant增加super权限时,A账号已经存在的连接,立即生效

D当给A账号grant增加super权限时,A账号已经存在的连接,不会立即生效,但执行flush privileges后,立即生效


在MySQL数据库中,对于以下索引类型的描述,哪些是正确的?AD

A HASH 索引只可用于=或<=>操作符的等式比较。

B全文索引主要针对较长的文本实现快速查询。如:GOLD SALESMAN。可以实现col like ‘%SALES%’。

C函数索引除了能对施加了函数转换的条件使用索引,当对函数中包含的列做查询时,也能使用该函数索引。

DB-Tree索引可以实现范围查询,甚至包括 is null、is not null

[解析]

B-Tree索引中包含空值,因此可以实现is null、is not null的查询;

HASH 索引只可用于=或<=>操作符的等式比较。由于数据不是按顺序存储的,范围查询时无法应用HASH索引。

全文索引主要对于比较长的文本实现比较。但只能对特定的单词。如上例中%GOLD%、%SALESMAN%,无法像传统索引采用部分字段匹配。

函数索引只能对实现了函数条件的查询使用索引。对于原本列值并不存储,故无法使用函数索引。



MySQL 8.0中,通过参数validate_password.policy设置不同的密码验证策略,其中默认的密码验证策略值是(1).

MySQL 从 8.0开始默认将回滚表空间从系统表空间中独立出来,存放到undo_001和undo_002中。


假如mysql的t1表使用InnoDB引擎,下面哪个场景会阻塞Query1: select * from t1 limit 1;AD

A另一个线程在Query1执行之前,执行了lock table t1 write; 语句,并执行完成。

B另一个线程在Query1执行之前,执行了delete from t1; 语句,且事务未提交。

C另一个线程在Query1执行之前,执行了alter table t1 add index(f1);语句,且当前处于"拷贝数据到临时表"阶段。

D另一个线程在Query1执行之前,执行了truncate table t1; 语句,当前处于waiting for metadata lock阶段。


InnoDB Cluster 三大组件是什么?ABC

A   MGR

B    MySQL Router

C    MySQL Shell

D    ProxySQL


MySQL从哪个版本开始解决了回滚表空间无法自动回收的问题?D

AMySQL 5.5

BMySQL 5.6

CMySQL 8.0

DMySQL 5.7


MySQL从哪个版本开始支持设置独立的回滚表空间?D

AMySQL 8.0

BMySQL 5.7

CMySQL 5.5

DMySQL 5.6


MySQL 8默认TCP端口都有哪些?ABD

A3306、B33060、C33063、D33062

MySQL 默认 TCP 端口号: 

1、3306 用于 MySQL Classic 协议(服务器端口选项) 

2、33060 用于 MySQL X 协议(服务器 mysqlx_port 选项) 

3、33062 用于使用 MySQL Classic 协议的管理连接(服务器 admin_port 选项)


下面关于mysql唯一索引说法正确的是?BCD

A联合索引不能创建为唯一索引

B当插入一行新数据时,唯一索引不能使用change buffer优化

C唯一索引查询比普通索引略快,是因为可以少扫描一些行

D当使用replace into插入数据时,如果碰到唯一索引冲突,会先删除这行冲突记录,然后再插入新的一行


mysql中一个表ii有12条记录。那select 'jilu' from ii;会是什么结果?c

A

1条'jilu'

B

无结果

C

12条'jilu'

D

报错


当mysql执行SQL: update t1 set name=name where id=1;时是否会记录binlog,正面说法正确的是?AD

A当binlog_format=row时,不会记录binlog

B当binlog_format=mixed时,不确定是否会记录binlog

C当binlog_format=row时,且表中含日期字段且带on update current_timestamp属性时,会记录binlog

D当binlog_format=statement时,会记录binlog


MySQL从属服务器I/O线程执行什么操作?B

A监视和调度对中继日志子系统的1/O调用

B连接到主服务器并请求其发送在其二进制日志中记录的更新

C获取二进制日志的锁, 以便读取要发送到从属服务器的每个事件

D读取中继日志并执行其中包含的事件


以下关于缓存的服务器配置参数描述,正确的是?ABCDEF

A

table_definition_cache:表定义缓存。缓存表的定义、描述符等的文件数量。可以被所有连接共享。

B

thread_cache_size:线程缓存。可以保存在缓存中的线程数。关闭时才在缓存中增加线程,创建连接时才从缓存中删除线程。

C

read_rnd_buffer_size:随机读缓冲区大小。每个线程连接独自使用。查询需要使用时才分配内存,只会分配需要的内存大小。

D

read_buffer_size:读入缓冲区大小。查询需要使用时才分配内存,一次性分配内存大小。

E

sort_buffer_size:会根据排序大小分配对应的内存空间。

F

key_buffer_size:键缓存。设置索引块缓存大小。只可以缓存MYISAM表的索引。被所有线程共享。

G

join_buffer_size:协助完成JOIN操作的缓存区。作用为减少驱动表和被驱动表的读取次数。设置的值大小对性能影响不大。

H

table_open_cache:打开表的缓存数量。可以被所有连接共享。

key_buffer_size:只可缓存MYISAM表的索引。被所有线程共享。 table_open_cache:打开表的缓存数量。每个连接各用自己的缓存空间,类似于ORACLE的PGA。 

table_definition_cache:表定义缓存。可以被所有连接共享。 thread_cache_size:线程缓存。下次连接关闭时生效。关闭时才在缓存中增加线程,创建连接时才从缓存中删除线程。 

sort_buffer_size:从 MySQL 8.012 开始优化器会根据需要分配内存缓冲区,而非此前一次性分配全部内存大小。 read_buffer_size:MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。 read_rnd_buffer_size:是MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度。MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。只会在查询需要使用时才为该缓存分配内存,并且只会分配需要的内存而不是全部指定大小。 join_buffer_size:为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作,然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。


MySQL 8.0中,UNION 和 Union All 有什么不同?

Union 去重,不排序


下列数据库产品中,哪些个通常作关系型数据库?ACE

A.Oracle数据库

B.Redis数据库(K-V数值型)

C.Mysql数据库

D.MongDB数据库(文档型)

E.PostgreSQL数据库


MySQL 8.0 的默认字符集是utf8mb4.


Mysql存储结构用的B+树

关于MySQL 8.0的直方图,下面说法正确的是

 A 当ANALYZE TABLE语句 指定的桶数小于列中不同值的数量时创建等高直方图

 B 当ANALYZE TABLE语句 指定的桶数大于列中不同值的数量时创建单点直方图


在MySQL中,实体完整性是通过(主键约束和候选键约束)来实现的。


MySQL里引擎里有哪些锁机制不支持?A

A堆锁     B排它锁     C页锁    D共享锁    E行锁    F锁表


在 Oracle 或者 MySQL 中导致 SQL 查询无法使用索引的原因包括以下哪几项?ABCD

ASQL 使用全表扫描

B违反了索引的最左匹配原则

C查询中的数据类型和字段类型不一致

D对索引字段进行了运算或者使用函数



MySQL数据库中,表T1有col1(int)和col2(int)两个列,两个列的值均为非空,

如下语句: UPDATE T1 SET COL1=COL1+1, COL2=COL1; 会出现什么样的结果?CD

SQL执行将会提示语法错误

COL1的值全部加1,,COL2为COL1未执行加1之前的值

COL1和COL2将会有相同的值

COL1的值全部加1,,COL2为COL1执行加1之后的值

该SQL执行是不会报错的,这也是MySQL的SQL语法与标准SQL不一样的地方。

这个SQL会正常执行,而且COL1和COL2将会有相同的值,且为COL1执行加1操作后的值。


varchar和char的区别(多选题)ABCD

char是固定长度字符串类型

char的存取速度还是要比varchar要快得多

两者的存储数据都非unicode的字符数据

varchar是可变长度字符串类型


众所周知,GROUP BY会对结果集进行排序。进而消耗较大的资源开销。 在MySQL 5.7版本中,以下哪些写法能避免文件排序?AC

A.select col1,sum(col2) from table group by col1 order by 1=1;

B.select col1,sum(col2) from table group by col1 desc;

C.select col1,sum(col2) from table group by col1 order by null;

D.select col1,sum(col2) from table group by col1 order by 1;

E.select col1,sum(col2) from table group by col1 order by rand();

F.select col1,sum(col2) from table group by col1 asc;

group by col1 ASC|DESC:会按照分组列col1做升序、降序排序; 

group by col1 order by 1:会按照第一列,即:col1列进行排序;

group by col1 order by rand(); 会对查询结果的每一行获取随机数,再对随机数排序; 

order by null、order by 1=1:为按照特定的值排序,即告诉优化器无需排序。



在MySQL权限管理中,以下哪些是全局性范围的权限(BCD)? A Create B Usage C Reload D Process E Lock tables


以下哪种方式不能用于分析MySQL语句性能问题?A

A使用 BINLOG

B使用 慢查询日志

C使用information_schema数据库的profiling表

D使用show processlist

E使用 Performance Schema数据库相关表

F使用 SHOW PROFILE

G使用 SHOW STATUS分析系统各项参数


在 linux 環境下登入 MySQL 時,以下何種狀況會失敗?D

A

mysql -uroot -ppassword

B

mysql -uroot -p databasename

C

mysql -u root -p

D

mysql -uroot -p password


在MySQL数据库中,假设表中有如下顺序的复合索引(A、B列),以下查询场景哪些可以使用该复合索引?EF
Awhere B =‘工具’;(没有a列不符合索引结构)

Bwhere A like ‘%钢材’;(%模糊在前不走索引)

Cwhere A=‘钢材’ or B=‘工具’;(or不符合索引结构不走索引)

Dwhere A =1;(隐式转换,不走索引)

Ewhere A is null;

Fwhere A>‘水泥’ and B >‘工具’;


MySQL中,当表中数据量变更超(10%)时,会重新收集统计信息

MySQL中,一个表的主键个数为(至多1个)


InnoDB引擎下,下面哪些是异步进行操作的?ABC

A.innodb_read_io_thread

B.innodb_purge_threads

C.innodb_write_io_threads

D.Current read事件


以下不是SQL语句中的聚合函数的是?A

A

DISTINCT

B

AVG

C

SUM

D

COUNT



Innodb存储引擎存储引擎状态报告中,关于os wait和spin,下面说法正确的是A

A.os wait释放CPU资源,spin 持续占有CPU资源

B.os wait和spin 都不持续占有cpu资源

C.os wait和spin都持续占用cpu资源

D.os wait持续占用CPU资源,spin释放cpu资源


mysql官方出品的客户端工具是?workbench


在MySQL中,性能分析经常用到的命令有哪些?BE 

A TOP 

B SHOW PROFILE 

C LOAD 

D SUM 

E EXPLAIN


MySQL中: explain SELECT * FROM emp USE INDEX () where job ='SALESMAN'; 

其中JOB列上有索引。其他列上无索引。 请问,上述SQL最终会采用何种访问方式:A

A全表扫描

B报语法错误

C使用job列索引

D不确定


Which two statements are true about the mysql_upgrade command?BD

the mysql_upgrade command is a utility that patches mysqld binary from its base version to a new version

the sql_upgrade command is run to check and attempt to fix tables for certain incompatibilities with the current version of MYSQL

the mysql_upgrade command executes on a stopped MYSQL server data directory to ensure that it is prepare for upgrade.

the mysql_upgrade command also execute the mysqlcheck command in order to provide all of its functionality.

关于mysql_upgrade命令,哪两个陈述是正确的?BD

mysql_upgrade命令是一个实用程序,用于将 mysqld 二进制文件从其基本版本修补到新版本

运行 sql_upgrade 命令以检查并尝试修复表与当前版本的 MYSQL 的某些不兼容性

mysql_upgrade命令在已停止的MYSQL服务器数据目录上执行,以确保它已准备好升级。

mysql_upgrade命令还执行 Mysqlcheck 命令以提供其所有功能。


Where does MySQL Linux RPM install the mysqld binary?A

A    /usr/sbin/

B    ./usr/bin/

C    /opt/mysql/server/bin/

D    /usr/libexec/

E    ./usr/local/mysql/bin/


考虑MySQL 服务器中的 key buffer。关于这个特性,哪两种说法是正确的? BD
A它只缓存InnoDB 表的索引块。
B它只缓存MyISAM 表的索引块。
C按每个连接设置。
D它是一个全局缓冲区。
E它缓存所有存储引擎表的索引块。


MySQL在创建以下哪些约束时会自动创建索引。    ACD

A

主键约束

B

非空约束

C

唯一约束

D

外键约束

E

自增约束

F

Check约束



MySQL可以用(DECLARE CURSOR)来声明游标


在关系型数据库中,以下说法正确的是?ABCD

A主键外的每个字段都必须依赖主键。

B数据量较大且UV和PV访问频次较高,如果按照三大范式设计,读取数据时会产生大量的关联查询,从而影响数据库的读取性能,因此需要增加冗余字段提高数据库的读取性能。

C数据表中的每一列都和主键字段直接相关,即不依赖于其他非主键。

D每个字段的值必须具有原子性,即为不可再次拆分的最小数据单元。


MySQL事务中原子性指的是?C

A事务中的数据不可分割

B事务中的状态不能分离

C事务中的SQL命令不可分割执行

D事务中的表不可分割


MySQL事务中隔离性指的是?A

A事务之间相互隔离

B事务中的数据是相互隔离的

C事务的连接之间是相互隔离的

D事务中的SQL命令是相互隔离执行的


关于explain执行计划,explain_type 有哪几个类型?ABD

A.EXTENDED

B.PARTITIONS

C.JSON

D.FORMA T = format_name

explain_type 有三个类型, EXTENDED、 PARTITIONS、 FORMA T = format_name,三个只能同时使用一个,否则报语法错误,分别表示含义如下(注意:5.7 开始默认启用 EXTENDED 和 PARTITIONS, 即只需要选择用与不用 FORMA T =json 即可,默认 FORMA T =TRADITIONAL。如果要显式使用 EXTENDED 和PARTITIONS 关键字,那么与 5.6 及其之前的版本一样,仍然只能选其一) 

 EXTENDED:表示查看扩展的执行计划信息,会把执行计划内部改写的 SQL 语句打印出来,放到 warnings 信息中,另外,EXTENDED 类型还会多输出一个列filtered(注意:5.7 版本开始默认启用了扩展的格式,不需要再显式使用这个关键字了) 

PARTITIONS:表示查看分区表的执行计划信息,执行计划中可以看到 mysql 扫描了哪些分区,会多出一个 partitions 输出列(注意:5.7 版本开始默认使启用了PARTITIONS 关键字的功能,不需要再显式使用这个关键字了) FORMA T = format_name:表示使用指定的格式来输出执行计划信息,format_name 有 TRADITIONAL 和 JSON 两种输出格式,分别表示的含义如下: * TRADITIONAL:表示使用传统的输出格式,像查询一行数据横排那样输出,当然你也可以使用\G 来竖排输出 * JSON:表示使用 json 输出格式,json 格式只会打印值不为 null 的列,json 格式中打印了更多的执行计划内部信息,5.7 中更是打印了详细的 cost 信息、行扫描信息以及使用到的列字段信息等


MySQL中查看表结构主要有哪些方式?ABD

A.show create table tabl_name;

B.desc tabl_name / explain tabl_name;

C.show table status like tabl_name;

D.information_schema.columns


MySQL在select语句的where子句中,使用正则表达式过滤数据的关键字是(regexp)



以下哪些不是MySQL数据类型?ABD

A.BIGTIME

B.BIGCHAR

C.BIGINT

D.BIGDATE



MySQL以下日志类型,哪种可以用于恢复误删的数据?D

A通用查询日志

B错误日志

C慢查询日志

D二进制日志(BINLOG)



关于MySQL中setup_consumers表的层级关系,以下说法正确的是?BC

A 当statements_digest配置为YES时,不论global_instrumentation配置是否为YES,相关events_statements_summary_by_digest都会记录

B global_instrumentation位于顶级位置。

C statements_digest、thread_instrumentation优先级次于global_instrumentation。

D 当global_instrumentation配置为YES时,会直接跳过statements_digest、thread_instrumentation的配置项检查。

global_instrumentation位于顶级位置。statements_digest、thread_instrumentation优先级次于global_instrumentation。当global_instrumentation为NO时,不会检查更低级别的consumers配置,

不会维护任何events输出表(memory_%开头的除外)当global_instrumentation配置为YES时,会维护全局events输出表。但仍需检查更低级别的consumers配置,来决定对应的events是否输出。

因此下级的当statements_digest配置为YES时,仍然需要检查上级global_instrumentation配置。


在MySQL 8.0.20版本中,下列关于SELECT子句中OUTFILE的位置正确的是?BCD

A.SELECT INTO OUTFILE 'file_name' * FROM table_name;

B.SELECT * FROM table_name INTO OUTFILE 'file_name' FOR UPDATE;

C.SELECT * FROM table_name FOR UPDATE INTO OUTFILE 'file_name';

D.SELECT * INTO OUTFILE 'file_name' FROM table_name;


当MySQL的执行计划中的type列为哪个值时,访问效率最高?    D

A.all

B.range

C.index

D.null


MySQL库中,有以下查询: select * from t1, t2 where t1.col1 = t2.col1 and t1.col2 = 1011000; 

t1表col2,t2表col1上存在索引 以下哪些情况可能发生隐式转换,从而导致索引不可用。BCD 

A.t1.col1为varchar型,t2.col1为char型 

B.t1.col1为varchar型,t2.col1为int型 

C.t1.col1为varchar型,t2.col1为bigint型 

D.t1.col1为utf8字符集,t2.col1为utf8mb4字符集 

 答案解析 

 t1.col1为varchar型,t2.col1为int型:关联列类型不一致,在被驱动表上发生隐式转换不走索引。

 t1.col1为varchar型,t2.col1为bigint型:关联列类型不一致,在被驱动表上发生隐式转换不走索引。 

t1.col1为utf8字符集,t2.col1为utf8mb4字符集:当字符集不同时,也会优先将utf8转换为utf8mb4字符集,发生隐式转换。


在MySQL中,以下哪个函数可以用于将字符串转换为日期类型(DATE)?A

A

STR_TO_DATE()

B

TO_DATE()

C

CONVERT()

D

CAST()

答案解析

STR_TO_DATE() 函数是 MySQL 特定的函数,用于将字符串转换为日期类型。它的用法和Oracle的TO_DATE() 函数类似,但语法略有不同。



在MySQL中,执行set names 'charset_name’命令,会同时设置以哪些系统变量的值?ACD
A.character_set_connection
B.character_set_system
C.character_set_client
D.character_set_results
E.character_set_server
F.character_set_database

set names ‘charset_name’ 相当于同时执行了下列设置:
SET character_set_client = ‘charset_name’;
SET character_set_results = ‘charset_name’;
SET character_set_connection = ‘charset_name’;


以下描述中对mysql里并行复制描述正确的有哪些?ABCD

A并行复制回放的时有3个阶段:1.flush stage:多个线程按进入的顺序将 binlog 从 cache 写入文件(不刷盘);2.sync stage:对 binlog 文件做 fsync 操作(多个线程的 binlog次刷盘);

    3.commit stage:各个线程按顺序做 InnoDB commit 操作

B若判断可以并行执行,那么选择worker线程执行事务的二进制日志。

C如该操作是DDL,亦或者是事务跨schema操作,则等待所有的worker线程执行完成之后,再执行当前的日志

D并行复制回放3个阶段,为了保证事务写入的顺序 flush,sync,commit每个阶段有 lock 进行保护。


MySQL建表语句中,设置表的默认字符集关键字是?CD(DEFAULT为可选关键字)

DEFAULT CHARACTER

CHARACTER

DEFAULT CHARACTER SET

CHARACTER SET


对于以下维护表的方式,哪些可以用于InnoDB存储引擎?AB

ACHECK TABLE

BANALYZE TABLE

COPTIMIZE TABLE

DREPAIR TABLE

ANALYZE TABLE:–收集表统计信息; CHECK TABLE:–检查表或视图错误; REPAIR TABLE:–用来对坏表进行修复,只可用于MyISAM 存储引擎; 

OPTIMIZE TABLE:–优化表,合并空间碎片。InnoDB不支持,可以通过命令:alter table one type=innodb; 来替代


MySQL中表变量的特点是?BD

A需要手动删除表

B保存临时数据到内存

C保存临时数据到磁盘

D会自动删除表


在MySQL中,性能分析经常用到的命令有哪些?AB

A.EXPLAIN

B.SHOW PROFILE

C.SUM

D.LOAD

E.TOP


MySQL在查询处理的哪个阶段创建查询的执行计划?D

A.Executing(执行)

B.Parsingo(语法解析)

C.Authorizingo(批准)

D.Optimizing(优化)

MySQL查询执行路径

 1. 客户端发送一条查询给服务器; 

2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段; 

3. 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划; 

4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;

5. 将结果返回给客户端。 在Optimizing阶段会创建查询的执行计划

1.语法分析阶段:将SQL查询语句经词法和语法分析后变换为一颗查询树st_select_lex传给优化器,并对SQL表达的语义进行检查。

2.生成逻辑查询执行计划阶段:优化器在查询树中遍历每个关系,确定关系是否是常量表,为每个关系查找可用的索引,运用关系
代数原理和启发式规则进行逻辑上的查询优化(如消除子查询,消除外连接等)。

3.生成物理查询执行计划阶段:优化器对每个连接的表进行排序,然后再求解多表连接最优路径,对于每个关系尽量利用索引计算其
代价,找出代价最小的路径后保存到JOIN类的best_positions。

4.执行查询执行计划阶段:把查询执行计划传到执行器进行执行。


在 MySQL 中执行 create table t(id int primary key)engine=innodb;然后继续执行 create temporary table t(id int) engine=myisam; 请问这条命令是否可以执行成功?B 

A 不能执行成功,报错 name is already used by an existing object。 

B 可以执行成功,并创建临时表 t 

C 不能执行成功,报错 Table 't' already exists。


MySQL数据库中,对于where 条件包含 OR 关系的SQL,以下描述哪些是对的?D

A只要OR 中的列存在复合索引,则该SQL就可能走索引。

B只要OR 中的一列为范围查询,则该SQL就不会走索引。

C只要其中部分列存在索引,则该SQL就可能采用索引访问。

D只有OR上的列都存在索引时,该SQL才可能走索引。


MYSQL获取SQL的执行计划有哪些方式?BCD

A

explain plan for + sql 语句

B

首先通过show processlist;获取线程ID;之后使用 EXPLAIN FOR CONNECTION 线程ID;获取执行计划。

C

desc + sql 语句

D

explain + sql 语句


在MySQL数据库中,所有存储引擎都支持每个表至少支持多个索引?B

A15个

B16个

C32个

D256

所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。


如果要开启组复制,以下哪些参数必须设置。ACF

A每个表必须要有主键

Bbinlog格式设置为mixed

C配置备库需要记录binlog。

D半同步插件

E配置binlog的校验

Fbinlog格式设置为row

如果要开启组复制,要求每个表都要有主键、binlog的格式为row、配置备库记录binlog。


以下关于mysql安装目录描述错误的是?D

include目录用于存储一些头文件

bin目录用于存储一些可执行文件

lib目录用于存储一些库文件

其余3项以上都不正确


MySQL中,哪个参数控制单个表的统计信息持久化到磁盘?D

A.innodb_stats_persistent = ON

B.STATS_PERSISTENT = 0

C.innodb_stats_auto_recalc

D.STATS_PERSISTENT = 1


MYSQL中强制采用索引的HINT是哪个?C

use index

ignore index

force index

with index


  1. 以下对备份过程中FLUSH TABLES WITH READ LOCK全局锁表述错误的是?C

A物理备份和逻辑备份都可能对数据库加全局锁

B加全局锁用来获取备份对应的binlog点

C全局锁只对写操作有影响

D加全局锁用来得到一致性镜像


MySQL里InnoDB临时表那些情况会用到?ABCD

Ainsert into select

B多表join

Cundo

Dbinlog_cache


mysql在RR隔离级别,当更新表中一行记录,且where条件中的字段没有索引时(例如: update tb set name='' where idno='xxx'),下面哪些说法正确?B

A.tb表不会锁住,部分记录加行锁

B.tb表会被锁住,所有记录加行锁

C.tb表会被锁住,加表锁

D.tb表不会锁住,一行记录加行锁


下面哪个选项是 MySQL binlog 日志落盘的顺序?c

Awrite-->commit --->sync--->flush

Bcommit -->write--->sync--->flush

Ccommit -->write--->flush--->sync

Dwrite -->commit--->flush--->sync


有以下查询: SELECT * FROM city ORDER BY en_name; 其中包含了排序。要增大sort_buffer_size以提升查询性能 。 可以通过以下哪些方式?ABC

set session/global sort_buffer_size = xxx;

使用hint :SELECT /*+ SET_VAR(sort_buffer_size = xxx) */ * FROM city ORDER BY en_name;

修改/etc/my.cnf 配置文件中的sort_buffer_size



因安全要求,需要修改mysql同步用户repl的密码。在主库修改完后,从库最佳修改同步用户密码的方式

A.change master to master_user='repl',master_password='new password';(5.7.14版本前)

B.change master to master_host='主库IP',master_user='repl',master_password='new password',master_log_file='binlog.020',master_log_pos='154';#其中master_log_file是show slave status查询的Relay_Master_Log_File的值,master_log_pos是Exec_Master_Log_Pos的值

C.change master to master_password='new password';(5.7.14版本后,正确选项)

D.change master to master_host='主库IP',master_user='repl',master_password='new password',master_log_file='binlog.020',master_log_pos='136';#其中master_log_file是show slave status查询的Master_Log_File的值,master_log_pos是Read_Master_Log_Pos的值


MySQL 的存储引擎 InnoDB 是(MySQL 5.5)版本中代替 MyISAM 引擎成为默认存储引擎?




下列哪些是开源数据库?Redis、MySQL、HBase、MongoDB

MySQL高可用MHA集群最少3台机器组成,即一主二从。

MySQL组复制中,组中的server之间通过(TCP)网络协议进行成员之间的内部通信与消息传递.


MySQL里多表join中MySQL里用到的方式有哪些?ABCDE

A.Block Nested-Loop

B.Nested-Loop Join

C.Batched Key Access

D.Index Nested-LoopJoin

E.Hash loop


MySQL中,数据表基本操作命令包括哪些?BCD

A.USE

B.CREATE

C.DROP

D.SHOW


下面四组SQL命令,全部属于数据操作语言DML的命令是:A

A

INSERT,UPDATE,DELETE

B

INSERT,DROP,ALTER

C

CREATE,DROP,UPDATE

D

UPDATE,DELETE,ALTER



下列聚集函数不忽略空值(NULL)的是D

A.MAX(列名)

B.SUM(列名)

C.AVG(列名)

D.COUNT(*)


下面关于“mysqld --initialize-insecure”命令描述不正确的是?D

A“--initialize” 表示初始化数据库

B“mysqld”表示mysql安装目录下bin目录下的可执行文件

Cmysqld自动为默认用户root设置空密码

Dmysqld自动为默认用户root设置一个随机密码


在MySQL5.7版本中,以下哪种索引访问方式不被支持?C

A索引全扫描

B索引范围扫描

C索引跳跃扫描(正确,8.0.13开始支持)

D索引降序扫描

E索引覆盖扫描


mysql5.7 online ddl中,以下哪种方式会通过copy方式进行?

A修改表自增起始值

B修改列类型(正确选项)

C添加索引

D新增列

SQL命令分组查询?SELECT * from Table_Name GROUP BY值

SQL命令根据ID更新一条记录?UPDATE Table_Name SET C1=value WHERE ID =值

SQL命令根据ID删除一条记录?DELETE from Table_Name WHERE ID =值

如何删除一个表?DROP TABLE datatable _name;

如何删除一个数据库?DROP DATABASE database_name;

MySQL中,以下能够删除一列的是()? alter table students drop age

MySQL语言中,删除一个视图的命令是?drop view

删除表字段使用关键字drop,且要删除的字段名之后无需给定该字段的数据类型,delete是删除表中相关记录,和字段操作无关。


MySQL5.7,半同步复制情况下,主库通过命令行执行alter table t1添加字段期间,以下说法错误的是B

A

alter命令在完成之前不会进入binlog记录事件

B

t1表的增量dml不可以执行

C

主库alter执行期间,从库不会因该alter命令导致延迟

D

t1表的增量dml可以执行,并且直接写入binlog




E-R方法的三要素:实体、属性、联系


常见的关系型数据库?ADFG


AOracle、BHBase、CMongoDB、DMySQL、ERedis、FSQL Server、GPostgreSQL 数据库


关于自增主键(mysql),以下说法错误的是?AC

A一个只有insert的场景,且所有insert语句都不指定自增主键值的表,自增主键列的值一定是连续且递增的

B将自增主键定义从int改成bigint时,会导致全表重做

C在一个空表里,先指定自增主键值是10,插入一行记录;然后以不指定自增值的方式插入10行数据,会报"主键冲突"错误

D自增主键字段在达到定义类型上限后,再插入一行记录,会报"主键冲突"错误

答案解析

自增主键值到达上限后,自增ID不会再增加,也不会重置,会报Duplicate entry 'xx' for key 'PRIMARY' 回滚或批量插入可能会产生ID空洞 主键字段修改,

会导致全表重做 指定主键值10插入后,下一个自增ID值自动生成时从11开始,故后续不会产生冲突。


SQL语法中,使用什么子句可以筛选分组后的数据?A

HAVING

ORDER BY

GROUP BY

WHERE


以下关于MySQL索引的描述,正确的是? abcd

A、二级索引会保存聚集索引中的全部列值,因此聚集索引列越宽,二级索引越大 【正确答案】 

B、mysql会按照聚集索引顺序存储表数据,当没有显示定义聚集索引时,存储的数据可能是无序的 【正确答案】 

C、主键一定是聚集索引 【正确答案】 

D、聚集索引不一定是主键 【正确答案】 

答案解析】MySQL以主键作为聚集索引,如果没有定义主键,会选择一个非空的唯一索引替代,如果没有这样的索引,会隐式的定义一个主键作为聚集索引。 

MySQL会按照聚集索引顺序存储表数据,没有定义聚集索引时会自动采用一个较短的列作为排序。当数据变动后,表中数据可能是无序的。 

聚集索引每个叶子节点都包含了索引列的值以及所有的剩余列; 二级索引会保存聚集索引的列值,聚集索引列越宽,二级索引越大。



MySQL索引创建描述,正确的是?ABD

A    CREATE INDEX indexName ON mytable(username(length));

B    CREATE UNIQUE INDEX indexName ON mytable(username(length))

C    CREATE TABLE mytable( ID INT NOT NULL);

D    ALTER table tableName ADD INDEX indexName(columnName)


数据库架构设计现在的主流方式ABC

A

shared eventing

B

shared nothing

C

shared disk

D

shared cpu


MySQL是(单进程多线程)数据库架构

MySQl安装完毕后为什么要配置环境变量?为了在任何地方使用MySQL命令

mysql变量类型:自定义变量、系统变量(全局变量、会话变量)、用户变量、局部变量

MySQL默认事务隔离级别是?repeatable-read,可重复读,不可脏读,可重复读,可幻读

MySQL的哪种事务隔离级别可以解决幻读?Serializable


MySQL的from命令属于以下什么操作?DQL

mysq在那个版本支持hash join?8.0.18

MySQL中要得到最后一句SELECT查询到的总行数,可以使用的函数是(FOUND_ROWS)

MySQL中读取参数文件的顺序为: ①/etc/my.cnf ②/etc/mysql/my.cnf ③/usr/local/mysql/etc/my.cnf ④~/.my.cnf

oracle默认端口1521,mysql默认端口3306,sqlserver默认端口1433,pgsql默认端口5432

InnoDB逻辑存储单元主要分为表空间、段、区和页。层级关系为?tablespace -> segment -> extent -> page

MySQL中,DECIMAL是(可变精度浮点值)数据类型

DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M

MySQL里binlog模式为ROW,但业务端使用replace into 命令的时候binlog里记录是语句会存在哪些?Delete语句、Update语句、Insert语句

在MySQL数据库单个普通表上,最多可以创建(16)个索引


MySQL中主要负责存储数据库的用户、权限设置的数据库是哪一个?A

A.mysql

B.performance_schema

C.information_schema

D.sys


在mysql5.7客户端执行一个事务: begin; update t1 set name='' where id=1;下面哪些做法可以使这个事务回滚?D

A再输入一下begin;命令并执行

B直接断开客户端和服务端的网线

C按Ctrl+C组合键

D再输入一下quit;命令并执行


MySQL的performance_schema主要用于监控数据库运行过程中的资源消耗、资源等待等,以下哪些是该SCHEMA能监控到的指标?ABCD

A事务情况

B耗时语句

C相应语句的执行阶段

D等待事件


select * from t1 ,(select name from t2) view1 where t1.name=view1.name;如果想强制view1不展开,是用 /*+ no_unnest */还是/*+ no_merge */? B

A

no_unnest

B

no_merge




在mysql中,当子查询语句含有in或者exists关键字时会触发mysql内部查询转换成semi join,以下哪些属于semi join的策略?ABCD

A

Materialize scan/Materialize lookup Strategy

B

Loosescan Strategy

C

Firstmatch Strategy

D

DuplicateWeedout strategy


视图是一个“虚表”,视图的构造基于D

A视图

B索引

C数据字典

D基表


下列关于MySQL锁的说法错误的是B

A锁是一种特殊的二元信号量

B为了避免活锁现象的发生,DBMS采用资源分配图的方法来处理事务的数据操作请求

C在顺序加锁中,维护数据项的加锁顺序很困难,代价也非常大

D对于每个需要撤销的死锁事务,可以简单的放弃该事务已经完成的全部操作,重新启动该事务


MySQL里change buffer的作用?A

A普通索引更新的时候,是通过change buffer提高性能

B如数据变更mysql里都是通过change buffer 进行数据的修改

C主键更新的时候也进行也会使用change buffer提升速度Insert语句

D唯一建更新的时候 ,是通过change buffer提升效率



要记录线程产生的历史事件,需要满足以下哪些条件?ABCD

Athread.history字段为YES

B在setup_instruments表启用相关联的instruments配置

C在setup_consumers表启用相关联的consumers配置

D如果是前台线程,还需要在setup_actors表对应主机和用户配置行的history字段为YES




用命令行登录mysql使用的协议有哪些?AD

A.socket

B.snmp

C.udp

D.tcp


MySQL查询表的统计信息可以通过以下哪些方式?ABDE

A通过MySQL.innodb_table_stats

B通过information_schema.tables

Cshow tables;

Dshow table status;

E通过information_schema.STATISTICS


多选题MySQL找出MDL锁信息,可通过如下哪些视图排查?ABCD

A sys.schema_table_lock_waits

B SHOW Processlist

C performance_schema.events_statements_current

D performance_schema.metadata_locks

E information_schema.innodb_trx

performance_schema.metadata_locks:可以查到相应MDL锁信息;SHOW Processlist可以看到进程信息,方便比对MDL获得的线程信息;information_schema.innodb_trx:只能看到事务情况,对排查定位没有帮助;performance_schema.events_statements_current:可以通过线程ID查看对应线程最后一次执行的语句(能否找到语句取决于该线程是否又执行了其他语句);sys.schema_table_lock_waits:综合了上述threads/metadata_locks/events_statements_current等视图的联合查询。


在MySQL中,以下为数据表重命名错误的是(C )。

A.ALTER TABLE t1 RENAME AS re_test

B.RENAME TABLE t1 TO re_test

C.RENAME TABLE t1 re_test

D.ALTER TABLE t1 RENAME re_test


在存在下列关键字的SQL语句中,不可能出现Where子句的是.A

Alter  Insert  Delete  Update


InnoDB存储引擎最低支持(行锁)级别锁。


关于RPO和RTO说法正确的是:BD

A

灾难发生后,是优先保证RTO,还是优先保证RPO。

B

RPO是数据丢失, RPO越小数据丢失的越少。

C

在定制恢复等级时,如果RTO要求越高,RPO就越难完成。

D

RTO强调的是服务的可用性, RTO越小服务损失就越少。


MYSQL所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。


MySQL8.0中,新增了以下哪些索引特性?CDEF

A全文索引

B反向键索引

C索引跳扫 8.0

D不可见索引 8.0

E降序索引 8.0

F函数索引 8.0.13


在 MySQL5.6 版本中引入了 GTID(Global Transaction Identifier 全局事务 ID) 复制,GTID 为每一个事务分配一个唯一的事务 ID,那么这个事务 ID 的格式由哪两部分组成?BC

A.pid

B.source_id

C.transaction_id

D.server_id



关于MySQL中索引的缺点,描述正确的是?BD

A创建索引可以加快查询速度

B创建索引会占用更多的磁盘空间

C索引有利于提升数据库的性能

D创建索引和维护索引要耗费时间


MySQL统计信息包括以下哪几类?ABC

A直方图统计信息

B表统计信息

C索引统计信息

D列统计信息

答案解析

MySQL没有列的统计信息;8.0后推出了直方图统计信息。包括单点直方图和等高直方图。


MySQL在创建(主键约束,外键约束,唯一约束)时会自动创建索引.


基于MySQL开发的知名国产数据库?TDSQL



在 MySQL 中,哪三个线程分配内存?ABE

Ainternal temporary table

Bsort buffer

Cquery cache

Dthread cache

Eread buffer

FInnoDB buffer pool instance


MySQL在全文本搜索的函数中,用于指定被搜索的列的是MATCH()


在MySQL数据库中,创建索引的方式不包括D

A使用 ALTER TABLE 语句创建索引

B使用 CREATE INDEX 语句创建索引

C使用 CREATE TABLE 语句创建索引

D使用 USE TABLE 语句创建索引


关于MySQL中setup_consumers表的描述,以下说法正确的是?ABC

A该表中ENABLED列代表是否启用consumers,有效值为YES、NO

B该表中列出consumers可配置列表项。

C对setup_consumers表的修改会立刻影响监控。

D该表可以对记录做增删改查操作。


MySQL支持的用户自定义完整性约束不包括D

A非空约束

BCHECK约束

C触发器

D视图


在mysql 8中,使用函数MOD()正确的答案是? SELECT MOD(1,0);B

 A -1 

B NULL 

C 1 

D 0



mysql中关于myisam与innodb引擎,哪项是正确的?ABD

AInnoDB支持行级锁,MyISAM不支持行级锁

BInnoDB支持事务,MyISAM不支持事务

CInnoDB会统计表行数,MyISAM则不会

DInnoDB支持外键,MyISAM不支持

以下关于MySQL存储引擎的描述,正确的是?ABD

AINNODB存储引擎支持外键,支持行级锁

BMYISAM存储引擎只支持表级锁

CMYISAM存储引擎支持外键、事务

DINNODB存储引擎的行级锁是通过索引来实现的

 对InnoDB存储引擎来说,以下关于索引的描述,哪些是正确的?ABD

A非聚簇索引(又叫二级索引),保存了索引列和主键列

B聚簇索引除了保存索引列的值,还保存了整行的其余所有列数据

C二级索引的大小与聚簇索引列长度无关

D聚簇索引的索引条目顺序与实际行的存储位置是顺序一致的

答案解析:聚簇索引每个叶子节点都包含了索引列的值以及所有的剩余列;

二级索引除了保存索引列外,还会保存主键列;

记录在插入时,会按照聚簇索引列的顺序进行插入,因此聚簇索引列顺序与行的存储位置是一致的。

二级索引中保存了引用行的主键列,因此主键越大二级索引越大。


以下关于MySQL索引的描述,正确的是?ABCD

A主键一定是聚集索引

Bmysql会按照聚集索引顺序存储表数据,当没有显示定义聚集索引时,存储的数据可能是无序的

C二级索引会保存聚集索引中的全部列值,因此聚集索引列越宽,二级索引越大

D聚集索引不一定是主键

MySQL以主键作为聚集索引,如果没有定义主键,会选择一个非空的唯一索引替代,如果没有这样的索引,会隐式的定义一个主键作为聚集索引。

MySQL会按照聚集索引顺序存储表数据,没有定义聚集索引时会自动采用一个较短的列作为排序。当数据变动后,表中数据可能是无序的。

聚集索引每个叶子节点都包含了索引列的值以及所有的剩余列;二级索引会保存聚集索引的列值,聚集索引列越宽,二级索引越大。

Mysql 的存储引擎,myisam和innodb的区别ABCD

AMyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。

BInnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

Cinnodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。

DMyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发


MySQL UNIQUE唯一索引的作用是(保证各行在该索引上的值都不得重复 )


在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中三年以前的信息, SQL 为:A

A

delete from 订单表 where 订购日期<DATEADD(yy,-3,getdate())

B

delete from 订单表 where 订购日期<getdate()-3

C

delete from 订单表 where 订购日期<DATEADD(yy,3,getdate())

D

delete from 订单表 where 订购日期<getdate()+3


在MySQL中,循环流程控制语句的关键字不包括A

A

FOR

B

WHILE

C

REPEAT

D

LOOP



在下列关于MySQL的说法中,正确的是D

A在MySQL中,一个表只能有一个索引

B在MySQL中,一个关系对应多个基本表

C在MySQL中,索引不能存放在存储文件中

D在MySQL中,一个或多个基本表对应一个存储文件


MySQL中key_column_usage视图列ordinal_position表示什么含义?A

A列在约束中的位置

B列在索引里的位置

C列在表中的位置

D列在视图里的位置


在 MySQL 中执行 create table t(id int primary key)engine=innodb;然后继续执行 create temporary table t(id int) engine=myisam; 

请问执行 show create table t;这条命令会显示普通表的创建命令还是临时表的命令?A

A

CREATE TEMPORARY TABLE `t` (`id` int DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

B

CREATE TABLE `t` (`id` int NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;



MySQL中,执行 SELECT TRUNCATE(122,-2); 的正确答案?C

A

122.00

B

-1.22

C

100

D

1.22



在mysql中,下面那些语句可以删除数据库中的用户?ABCD

A.delete from user where User="test" and Host="localhost";

B.drop user username@ localhost;

C.drop user username;

D.drop user username@'%';


下面那些是可以连接MySQL数据库的客户端工具ABC     ASQLyog  BNavicat  CToad  DPL/SQL Developer

MySQL事务中一致性指的是?D  A 事务中的表记录字段数量一致 B 事务中的表记录数量一致 C 事务中的SQL命令保持一致 D 事务修改前后的数据总体保证一致


MySQL中触发器的作用是?B

A触发器用来复制数据库

B触发器是针对数据库的操作(增删改)发生时被调用的特殊存储过程

C触发器用来新增数据

D触发器用来保存日志


MySQL删除表的几种方式,选择正确的描述(BCE)

A.truncate 仅删除表数据,不支持where条件过滤,支持回滚,不记录日志,效率高于delete

B.如果需要联合其他表,则需要使用delete from

C.delete 仅删除表数据,支持where条件过滤,支持回滚,记录日志

D.drop 删除表数据同时删除表结构,但表所占空间不释放

E.delete 操作后返回删除的记录数,而 truncate 返回的是0或者-1


ResultSet的主要作用是?D        A执行存储过程\B删除数据\C链接数据库\D缓存数据结果集


下面选项中,属于事务特征的是:ABCD

A

Atomicity

B

Durability

C

Consistency

D

Isolation


下面关于null说法正确的是?C

A

null等于空格

B

null等于0

C

null参与数值计算后结果是null

D

null等于''


在mysql5.7版本中,重命名数据库的方法通常有几种?AC

A.重命名数据库里面的所有表

B.RENAME DATABASE db_name TO new_db_name

C.通过mysqldump进行数据库的备份再导入

答案解析

1.RENAME DATABASE,经测试该方法在5.5及后续版本中已不可用;

2.通过mysqldump进行数据库的备份再导入(当数据库较大的时候,这种方法耗时耗力) 

3.重命名数据库里面的所有表, information_schema数据库table表记录了数据库中所有表的信息; 

1、CREATE DATABASE new_db_name; 创建新的数据库 

2、RENAME TABLE db_name.table1 TO new_db_name.table1; 对所有的表进行重命名 

3、DROP DATABASE db_name; 删除原来的数据库 当数据库表包含表很多的情况下,这样操作是比较效率也比较低,可以通过以下脚本进行批量修改; mysql -uroot -p -e "select concat('rename table db.',table_name,' to new_db.',table_name,';') from information_schema.TABLES where TABLE_SCHEMA='db';" > rename_mysql_name.sql 执行sql语句 mysql -uroot -p < rename_mysql_name.sql 批量进行修改; 总结:以上几种的操作方法,其中第二种的方法是最保险的,这也是很多公司进行小数据库备份还原的一种方式。 第三种方法虽然速度较快但是风险也相对较大,会导致一些视图不能用,因为视图的名称虽然变了,但是视图里面引用的表还是原来数据库的表,所以用这种方式进行迁移的时候就需要检查数据库视图的情况;


关于 MySQL 服务器,以下说法错误的是: B
A.MySQL 允许为不同用户指定不同的资源组。
B.MySQL 的服务器和客户端必须运行在不同的计算机上。
C.MySQL 可以设置监听端口、地址和最大连接数。
D.MySQL 可以运行在 FreeBSD、Linux或Windows系统。


MySQL8.0中支持以下哪些直方图类型?BD

AHybrid类型直方图

B等宽直方图

CTOP Frequency类型直方图

D单点直方图


以下条件,在相同操作系统版本下可以使用MySQL clone技术的有(B)。

A.MySQL8.0.x版本到MySQL8.0.x版本,x相同且x小于17。

B.MySQL8.0.x版本到MySQL8.0.x版本,x相同且x大于等于17。

C.MySQL8.0.x版本到MySQL8.0.x版本,x不相同且x大于等于17。

D.MySQL5.7.x版本到MySQL5.7.x版本,x相同。


MySQL的索引统计信息,主要包括以下哪些内容?ABCDE

A索引叶子节点的数量

B索引页的数量

C索引列唯一值的数量

D索引列与主键列的组合唯一值数量

E未定义主键时的隐式主键DB_ROW_ID唯一值数量


什么是1NF?表的每一列都是不可分割的基本数据项

什么是3NF?满足2NF,表中不包含已在其它表中已包含的非主关键字信息


MySQL对表字段创建唯一索引后,该字段是否可以存NULL值或者空值(无空格的两个单引号'')?B 

A 不可以 

B 可以,但能存N个NULL值和一个空值 

C 可以,但能存N个NULL值 和 N个空值 

D 可以,但只能存一个NULL值 和 一个空值


MySQL中以下约束哪个不是单表约束?A

A外键约束

B主键约束

C非空约束

D唯一约束


mysql8.0 InnoDB的线程结构主要分为ABC

AI/O线程结构

B其他线程结构

C主线程结构


备份所有数据库用以下哪个语句?CD

A.mysqldump -u root -p auth > auth.sql

B.mysqldump -u root -p mysql user > msyql-user.sql

C.mysqldump -u root -p --all-databases > all-db.sql

D.mysqldump -u root -p -A > all-db.sql


在数据库系统中,有哪几种数据模型ABC

A网状模型

B层次模型

C关系模型

D实体联系模型


MySQL中,slow log和general log有哪些保存方式?AB

A.tables

B.files

C.csv

D.memory


MySQL 8.0.31新增特性是以下哪一个?A

A并行创建索引

B倒序索引

C函数索引

D跳跃索引

最后修改时间:2024-01-10 09:34:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论