这是MySQL 5实力养成暨评量里的全国资料库应用技能测验MySQL 5模拟试题第三回,ㄚ琪试着检验自己的MySQL 5的功力如何,这次的成绩是88分,在下午很想昏睡之余,有这样的成绩还颇满意的,不过若不是如此,我们怎能妄自参加认证测验呢?
[adsense][/adsense]
06.‘下列关联式资料库的叙述,何项是正确的?’
答案:(C)不需依赖栏位内容排序来储存资料
我回答的是(A)一个资料表(table)是由许多栏位组成的,现在看起来(C)确实没错,看来疲累的状况下,很容易失神。
45.‘建立预储程序使用者需要下列何项权限’
答案:(C) Create Routine
我答(B),这一题应该可以不用错的,请回顾MySQL预储程序这里的分享。
47.‘下列哪一种储存引擎会接受指令但不存资料,搜寻资料时均回传空集合,其功能被使用在资料会自动复制但不在本地端储存的分散式资料库设计?’
答案:(A) Blackhole
我答(C),这种进阶题只好弃械了,Blackhole虽然在MySQL丛集有稍微题到,但应该不是很详细,我们可以详读MySQL 5.5 Reference Manual :: 14 Storage Engines :: 14.9 The BLACKHOLE Storage Engine 或是 MySQL 5.1参考手册 :: 15. 存储引擎和表类型::15.10.BLACKHOLE存储引擎
转译繁体中文于下:
BLACKHOLE储存引擎就像“黑洞”一样,它接收资料但丢弃它而不是储存它。取回总是返回空集:
mysql> CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE;
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO test VALUES(1,'record one'),(2,'record two');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM test;
Empty set (0.00 sec)
当您建立一个BLACKHOLE资料表的时候,伺服器在资料库目录建立一个资料表定义档案。档案用资料表的名字开头,并且有一个.frm延伸名。没有其它档案关联到这个资料表格。
BLACKHOLE储存引擎支援所有种类的索引。
要允许这个储存引擎,在您建立MySQL之时使用–with-blackhole-storage-engine选项来configure。BLACKHOLE储存引擎在MySQ供应的伺服器二进制版里可以找到;通过查看SHOW ENGINES或SHOW VARIABLES LIKE ‘have%’的输出,您可以确定您的版本是否支援这个引擎。
到BLACKHOLE资料表的插入不储存任何资料,但如果二进制日志被允许,SQL语句被写入日志(并被复制到从伺服器)。这可以有用帮助地作为重复器或过滤器机制。例如,假设您的应用需要从伺服器侧的过滤规则,但传输所有二进制日志资料到从伺服器首先导致过多交通的结果。在这种情况下,在主伺服器主机上建立一个伪从伺服器程序,它的储存引擎是BLACKHOLE,描述如下:

主伺服器写它的二进制日志。伪mysqld程序作为从伺服器,应用期望的replicate-do和replicate-ignore规则的合并,并且写一个新的,被过滤的属于它自己的二进制日志 。(请参阅6.8节,“复制启动选项”)。这个已过滤日志被提供给从伺服器。
既然伪程序不确实地储存任何资料,只有很小的由在复制主伺服器主机上额外的mysqld程序招致的处理开支。这个类型的建立可以用额外复制从伺服器来重复。
其它可能对BLACKHOLE储存引擎的使用包括:
· 转储档案语法的验证。
· 来自二进制日志记录的开销测量,通过比较允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。
· 因为BLACKHOLE本质上是一个“no-op” 储存引擎,它可能被用来搜寻与储存引擎自身不相关的性能瓶颈。
48.‘下列哪一种引擎是不作处理的空壳引擎,可以建立资料表,但无法储存和撷取资料,目的在于提供MySQL原始程式一个如何写入新储存引擎的范例?’
答案:(B) Example
这更进阶了,还有这一招,ㄚ琪不懂只好答(A)了,大家一样可以参阅MySQL 5.5 Reference Manual :: 14 Storage Engines :: 14.12 The EXAMPLE Storage Engine 或 15.6. EXAMPLE存储引擎
转译繁体中文于下:
EXAMPLE储存引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL原始程式中的一个例子,用来演示如何开始编写一个新储存引擎。 同样,它的主要兴趣是对开发者。
要对EXAMPLE引擎检查原始码,请查看MySQL原始码分发版的sql/examples目录。
要允许这个储存引擎,使用在建立MySQL之时使用–with-example-storage-engine选项来configure。
当您建立一个EXAMPLE之时,伺服器建立在资料库目录建立一个资料表定义档案。档案由资料表名字开始,并由一个.frm的延伸名。没有其它档案被建立。没有资料被储存进资料表或者从中取回。
mysql> CREATE TABLE test (i INT) ENGINE = EXAMPLE;
Query OK, 0 rows affected (0.78 sec)
mysql> INSERT INTO test VALUES(1),(2),(3);
ERROR 1031 (HY000): Table storage engine for 'test' doesn't have this option
mysql> SELECT * FROM test;
Empty set (0.31 sec)
EXAMPLE储存引擎不支援编索引。