好文档 - 专业文书写作范文服务资料分享网站

2020年华为精选50面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

发送客户端支持的加密办议及版本,SSL. TLS

服务器端从中筛选选择合适的加密协议

k ------------------------------------------------------

服务器端返I叫证书,证书中有公钥 客户端使用根证书验证证书合

法性

j客户端生成对称密钥,通过证I弓中的公钥加密,发送到服务器端j

!服务器端使用私钥解密,获取对称密钥,使用对称密钥加密数据[

客户端解密数据,SSL开始通信...

r ---------------------------------------------------- 1

在使用HTTPS是需要保证服务端配置正确了对应的安全证书 客户端发送请求到服务端

服务端返回公钥和证书到客户端

客户端接收后会验证证书的安全性,如果通过则会随机生成一个随机数,用 公钥对其加密,发送到服务端

服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数, 随后用这个随机数当做私钥对需要发送的数据进行对称加密

客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密 并且解析数据呈现结果给客户 SSL加密建立

39. innodb引擎的4大特性。

innodb引擎的4大特性1.插入缓冲;2.二次写;3.自适应哈希;4.预读

1 ?插入缓冲(insert buffer)

插入缓神(Insert Buffer/Change Buffer):提升插入性能,change buffering 是 insert buffer 的加强,insert buffer 只针对 insert 有效,change buffering 对 insert、 deletes update (delete+insert)、purge 都有效 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写 到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,如果在则直 接插入;若不在,则先放到Insert Buffer中,再按照一定的频率进行合并 操作,再写回disk。这样通常能将多个插入合并到一个操作中,目的还是为 了减少随机10带来性能损耗。 使用插入缓冲的条件:*非聚集索引 *非唯一索引

Change buffer是作为buffer pool中的一部分存在。

Innodb_change_buffering参数缓存所对应的操作:(update会被认为是 delete+insert) innodb_change_buffering,设置的值有:insertSs deletesx purgess changes (inserts ft deletes)、all (默认)、none。

all:默认值,缓存 insert, delete, purges 操作 none:不缓存

inserts:缓存 insert 操作 deletes:缓存 delete 操作

changes:缓存 insert 和 delete 操作 purges:缓存后台执行的物理删除操作

可以通过参数控制其使用的大小:

innodb_change_buffer_max_size,默认是 25%,即缓冲池的 1/4。最大可设 置为50%。当MySQL实例中有大量的修改操作时,要考虑増大

innodb_change_buffer_max_size

上面提过在一定频率下进行合并,那所谓的频率是什么条件?

1) 辅助索引页被读取到缓冲池中。正常的select先检查Insert Buffer是 否有该非聚集索引页存在,若有则合并插入。

2) 辅助索引页没有可用空间。空间\于1/32页的大小,则会强制合并操作。 3) Master Thread每秒和每10秒的合并操作。

2.二次写(double write)

Doublewrite缓存是位于系统表空间的存储区域,用来缓存InnoDB的数据页 从innodb buffer pool申flush之后并写入到数据文件之前,所以当操作 系统或者数据库进程在数

据页写磁盘的过程中崩溃,Innodb可以在 doublewrite缓存中找到数据页的备份而用来执行crash恢复。数据页写入 到doublewrite缓存的动作所需要的10消耗要小于写入到数据文件的消耗, 因为此写入操作会以一次大的连续块的方式写入 在应用(apply)重做日志前,用户需要一个页的副本,当写入失效发生时, 先通过页的副本半还原该页,再进行重做,这就是double write doubl ewri t e 组成: 内存中的 doublewrite buffer,大小 2M。

物理磁盘上共享表空间中连续的128个页,即2个区(extend),大小同样 为2M。

对缓冲池的脏页进行刷新时,不是直接写磁盘,而是会通过memcpy ()函数将 脏页先复制到内存中的doublewrite buffer,之后通过doublewrite再分 两次,每次1M顺序地写入共享表空间的物理磁盘上,在这个过程中,因为 doub lewr i t e页是连续的,因此这个过程是顺序写的,开销并不是很大。在 完成doublewrite页的写入后,再将doublewrite buffer中的页写入各个 表空间文件中,此时的写入则是离散的。如果操作系统在将页写入磁盘的过 程中发生了崩溃,在恢复过程中,innodb可以从共享表空间中的doublewrite 中找到该页的一个副本,将其复制到表空间文件,再应用重做日志。

3. 自适应哈希索引(ahi)

Adaptive Hash index属性使得InnoDB更像是内存数据库。该属性通过 innodb_adapi t ve_hash_index 开启,也可以通过一 skip-i nno db_adap t i ve_hash_i nde x 参数 关闭

Innodb存储引擎会监控对表上二级索引的查找,如果发现某二级索引被频繁 访问,二级索引成为热数据,建立哈希索引可以带来速度的提升

经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问 三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速 度很快。 哈希(hash)是一种非常快的等值查找方法,在一般情况下这种查找的时间 复杂度为0(1),即一般仅需要一次查找就能定位数据。而B+树的查找次数, 取决于B+树的高

度,在生产环境中,B+树的高度一般3-4层,故需要3-4 次的查询。

innodb会监控对表上个索引页的查询。如果观察到建立哈希索引可以带来速 度提升,则自动建立哈希索引,称之为自适应哈希索引(Adaptive Hash Index, AHI)。

AHI有一个要求,就是对这个页的连续访问模式必须是一样的。 例如对于(a,b)访问模式情况: where a = xxx

where a - xxx and b - xxx 特点:

\、无序,没有树高

2、降低对二级索引树的频繁访问资源,索引树高S4,访问索引:访问 树、根节

点、叶子节

,\适应

缺陷:

1、 hash自适应索引会占用innodb buffer pool; 2、 自适应hash索引只适合搜索等值的查询,如select * from table where

index_col='xxx',

而对于宜祉查找类型,如范围查找,是不能使用的;

3、 极端情况下,自适应hash索引才有比较大的意义,可以降低逻辑读。

4.

预读(read ahead)

InnoDB使用两种预读算法来提高I性邰:线性预读(linear read-ahead) 和随机预读

(randomread-ahead)

为了区分这两种预读的方式,我们可以把线性预读放到以extent为单位, 而随机预读放到以extent申的page为单位。线性预读着眼于将下一个 extent提前读取到buffer pool中,而随机预读着眼于将当前extent中的 剩余的page提前读取到buffer pool中。

线性预读(linear read-ahead)

方式有一个很重要的变量控制是否将下一个extent预读到buffer pool * , 通过使用配置参数innodb_read_ahead_threshold,可以控制Innodb执行预 读操作的时间。如果一个extent中的被顺序读取的page超过或者等于该参 数变量时,Innodb将会异步的将下一个extent读取到buffer pool中, innodb_read_ahead_thresho 1 d可以设置为0-64的任何值,默认值为56, 值越高,访问模式检查越严格

例如,如果将值设置为48,则InnoDB只有在顺序访问当前extent中的48 个pages时才触发线性预读请求,将下一个extent读到内存中。如果值为8, InnoDB触发异步预读,即使程序段中只有8页被顺序访问。你可以在MySQL 配置文件中设置此参数的值,或者使用SET GLOBAL需要该SUPER权限的命 令动态更改该参数。

在没有该变量之前,当访问到extent的最后一个page的时候,Innodb会决 定是否将下一个extent放入到buffer pool中。

随机预读(r andomr e ad-ahe ad)

随机预读方式则是表示当同一个extent中的一些page在buffer pool中发 现时,Innodb会将该extent中的剩余page —并读到buffer pool中,由于 随机预读方式给

Innodb code带来了一些不必要的复杂性,同时在性能也存 在否舊定性,在5. 5中已

经将这种预读方式废弃。要启用此功能,请将配置 变量设置 innodb_randoiri_read_ahead 为 0N。

40. MylSAM 和 InnoDB select count(*)哪个更快,为什么?

MvIS皿快,因为旳ISAM本身就记录了数量,而InnoDB要扫描数据。

41. MySQL 中 myisam 与 innodb 的区别。

1、 存储结构

每个MvISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始, 扩展名指岀文件类型。

. frin文件存储表定义。

数据文件的扩展名为.MYD (MYDat a)。 素引文件的扩展名是.MYI (MYIndex)。 2、 存储空间

MylSAJL可被压缩,存储空间较小。

InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于 高速缓冲

数据和索引。

MvIS皿的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提 高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有 使用压缩从而会造成Innodb比MylSAM体积庞大不小 3、 事务处理

类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不支 持外键、

不提供事务支持。

InnoDB提供事务支持事务,外部键(foreign key)等高级数据库功能。 SELECT、UPDATE^ INSERT、Delete 操作

如果执行大量的SELECT, MylSAM是更好的选择。

如果你的数据执行大量的INSERT或UPDATE,岀于性能方面的考虑,应该使 用 InnoDB 表。

DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。而 则是重新建立表。在innodb上如果要清空保存有大量数据的表,最 好使用truncate table这个命令。

AUTO_INCREMENT

MvISAJL可以和其他字段一起建立联合索引。引擎的自动増长列必须是索引, 如果是

组合索引,自动増长可以不是第一列,他可以根据前面几列进行排序 后递増。

InnoDB: InnoDB中必须包含只有该字段的索引。引擎的自动増长列必须是索 引,如

果是组合索引也必须是组合索引的第一列。

4、 表的具体行数

MylSAJL保存有表的总行数,如果select count (*) from table;会直接取 岀该值。 InnoDB:没有保存表的总行数,如果使用select count (*) from table;就 会遍历整个

表,消耗相当大,但是在加了 where后,myisain和innodb处理 的方式都一样。 5、 全文索引

Myl SAJ】'土持FULLTEXT类型的全文索引。不支持中文。

InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx 插件支持全

文索引,并且效果更好。 6、 表锁差异

My I SAIL只支持表级锁,只支持表级锁,用户在操作myisain表时,select, update, delete, insert语句都会给表自动加锁。

InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多 用户并发操作的新能。但是InnoDB的行锁也不是绝对的,如果在执行一个 SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如 update table set nuirnl where name

like aaa%”

42. 画出OSI和TCP/IP协议栈的对应关系.

OSI/RM共分为七层,TCP/IP分为四层。TCP/IP中的网络接口层相当于0SI 的物理层和

数据槌路层,TCP的应用层相当于0SI的应用层、表示层和会话 层。其余层次基本对应。见图,其中外围深颜色的是0SI层次,内部白颜色 的是TCP层次。

2020年华为精选50面试题及答案

发送客户端支持的加密办议及版本,SSL.TLS服务器端从中筛选选择合适的加密协议k------------------------------------------------------服务器端返I叫证书,证书中有公钥客户端使用根证书验证证书合法性j客户端生成对称密钥,通过证I弓中的公钥
推荐度:
点击下载文档文档为doc格式
3vikk5sm7j76vac3ljxx41z4g1sgcd0188r
领取福利

微信扫码领取福利

微信扫码分享