参考答案:
【问题1】
索引过多的副作用有:
(1)过多的索引会占用大量的存储空间;
(2)更新开销,更新语句会引起相应的索引更新;
(3)过多索引会导致查询优化器需要评估的组合增多;
(4)每个索引都有对应的统计信息,索引越多则需要的统计信息越多;
(5)聚集索引的变化会导致非聚集索引的同步变化。
【问题2】
(a)属性的离散值
(b)周期性数据/周期数据
(c)能力强
(d)均匀
李工建议根据预约订单所在城市进行表分区,而所在城市属性为离散值,根据所在城市属性建立列表分区,也方便不同城市处理自己的数据,方便数据管理。
【问题3】
主从复制的基本步骤:
(1)主服务器将所做修改通过自己的IO线程,保存在本地二进制日志中;
(2)从服务器上的1/0线程读取主服务器上面的二进制日志,然后写入从服务器本地的中继日志;
(3)从服务器上同时开启一个SQL thread,定时检查中继日志,如果发现有更新则立即把更新的内容在本机的数据库上面执行一遍。
详细解析:
本题考查的是数据库相关知识内容及应用。
【问题1】
索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。
索引的优点:
(1)加快了数据的检索速度;
(2)创建唯一性索引,保证数据库表中每一行数据的唯一性;
(3)加速表和表之间的连接;
(4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间;
(5)建立索引之后,在信息查询过程中可以使用优化隐藏器,提高整个信息检索系统的性能。
索引过多的缺点:
(1)过多的索引会占用大量的存储空间;
(2)更新开销,更新语句会引起相应的索引更新;
(3)过多索引会导致查询优化器需要评估的组合增多;
(4)每个索引都有对应的统计信息,索引越多则需要的统计信息越多;
(5)聚集索引的变化会导致非聚集索引的同步变化。
【问题2】
范围分区:Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中。如按照时间划分,2010年1月的数据放到a分区,2月的数据放到b分区,在创建的时候,需要指定基于的列,以及分区的范围值。
列表分区:List分区也需要指定列的值,其分区值必须明确指定,该分区列只能有一个,不能像range或者hash分区那样同时指定多个列做为分区依赖列,但它的单个分区对应值可以是多个。在根据某字段,如城市代码分区时,可以指定default,把非分区规则的数据,全部放到这个default分区。
组合分区:如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将分区再分区,即组合分区的方式。
Hash分区(散列分区):对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。
李工建议根据预约订单所在城市进行表分区,而所在城市属性为离散值,根据所在城市属性建立列表分区,也方便不同城市处理自己的数据,方便数据管理。
【问题3】
主从复制的定义:
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从哪个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新。
主从复制的原理:
1.数据库有个bin-log二进制文件,记录了所有sql语句。
2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
主从复制的基本步骤:
(1)主服务器将所做修改通过自己的IO线程,保存在本地二进制日志中;
(2)从服务器上的1/0线程读取主服务器上面的二进制日志,然后写入从服务器本地的中继日志;
(3)从服务器上同时开启一个SQL thread,定时检查中继日志,如果发现有更新则立即把更新的内容在本机的数据库上面执行一遍。