面试问题记录 二 (数据库、Linux、Redis)
前言
接着上次的面试问题记录,在最后还有几道问的数据结构方面的知识点要补充
还是那句话:如果文中解释有明显错误,劳烦请及时指正我,在这不胜感激!!!
一、MySQL
1.说说MySQL与MongoDB的区别?
答:首先就是MySQL是关系型数据库,由二维表及其自身之间的关系组成的数据组织,这样易于维护,而且适用于SQL复杂的查询、支持事务等;MongoDB的话是以数据结构化的方式存储,而且和MySQL不同,它是只能存储在随机存储器上的,底层数据结构是B树, 虽然本身没有事务机制,但是可以从逻辑上实现事务。
2.内连接、左连接、右连接是怎样的?
答:内连接(inner join)是把匹配的都显示出来,比如两张表,首先确定从哪张表查出要匹配的字段,然后加上关键字inner join,把后面符合条件的结果查出来;左连接(left join)是将左表为基准,来一一匹配右表,如果匹配不上返回左表内容,右表返回空;右连接(right join)是将右表为基准,来一一匹配左表,如果匹配不上则返回右表内容,左表返回null。
3.如何分库分表?为什么分?
答:当我们一开始数据库中没有进行分库分表的时候,由于数据库中的数据量并不是可控的,而且随着业务的发展,数据量就会不断扩大,这样会导致数据库的操作开销越来越大,而且服务器的资源是有限的,最终数据量和数据库的处理能力都会到达瓶颈;分库分表有垂直和水平方式,一般是先垂直后水平,垂直是按一个系统中不同的业务来分库分表,也可以解决那种表中字段较多,数据量大,不常用的,长度比较长的进行分表处理;水平是将数据