• sfjc面试记录


    1、MySQL组件和工作原理

      MySQL主要组件:

      ① Connectors:与客户端工具和其他编程语言中的sql 语句进行交互

      ② Connection Pool (连接池):管理缓冲用户连接,线程处理等需要缓存的需求

      ③  Management Serveices & Utilities:处理器/系统管理和控制工具

      ④ SQL Interface (SQL接口):接受用户的SQL命令,并且返回用户需要查询的结果。

      ⑤ Parser (解析器):SQL命令传递到解析器的时候会被解析器验证和解析。

        主要功能:

        a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,后面SQL语句的传递和处理就是基于这个结构的

        b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去

      ⑥ Optimizer (查询优化器,可以利用explain语法查询SQL语句的执行计划)

        SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。  

      ⑦ Cache和Buffer (查询缓存)

      ⑧ Engine (存储引擎)、

      工作原理:

      1)连接器(connector)拿到程序请求,将请求暂时存在连接池(connection pool)中,并有处理器(Management Sercice&Utilities)管理。

      2)当该请求从等待队列进入处理队列,管理器(Management Service&Utilities)会将该请求丢给SQL接口(SQL interface)

      3)SQL接口(SQL interface)接收到请求后,它会将请求进行hash处理并与缓存(Cache和Buffer)中的结果进行对比,若匹配则返回缓存(Cache和Buffer)中的结果,否则继续完整流程。

      4)SQL接口(SQL interface)把请求传递给解析器(Parser),解析器(Parser)判断SQL是否正确,正确则转换为数据结构,进行后续步骤,错误中断执行,返回

      5)解析器(Parser)将数据结构传递给优化器(Optimizer),优化器(Optimizer)会产生多种执行计划,选择最优的执行计划执行

      6)确定最优的执行计划后,SQL会交给存储引擎(Engine)来处理,存储引擎从存储设备中取得相应数据,原路返回给程序

      事务的隔离级别

      数据库默认隔离级别:  mysql ---repeatable;oracle、sql server ---read commited

      在MySQL标准中定义了四种隔离级别:

           READ UNCOMMITTED(读未提交):事务中的修改即使未提交也是对其它事务可见

           READ COMMITTED(读提交):事务提交后所做的修改才会被另一个事务看见,可能产生一个事务中两次查询的结果不同。

           REPEATABLE READ(可重读):只有当前事务提交才能看见另一个事务的修改结果。解决了一个事务中两次查询的结果不同的问题。

           SERIALIZABLE(串行化):只有一个事务提交之后才会执行另一个事务。

      附:参考博客:

        https://www.cnblogs.com/daijw/p/9250331.html 

        https://cloud.tencent.com/developer/article/1347090 

        https://www.cnblogs.com/xiaohaillong/p/6079551.html

    2、MySQL有哪些引擎

      Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB

      常用引擎有:

      InnoDB引擎

        1)支持事务,实现了标准的4个事务隔离级别

        2)支持外键、行级锁等数据库的高级特性

        3)支持每个表的数据和索引存放在单独文件中(innodb_file_per_table)

        4)当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的

        5)索引基于聚簇索引建立,对于主键查询有较高性能

        6)使用的B+索引

      MyISAM引擎

        1)不支持事务和行级锁

        2)MyISAM对整张表加锁而不是对行,所以不适用写操作比较多的场景

        3)性能较InnoDB更好,执行速度更快

        4)不支持单表一个文件,会将所有的数据和索引内容分别存在两个文件中

        5)如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首选

        6)使用的B+索引

      Memory引擎

        1)数据存储在内存中,不消耗IO

        2)存储数据速度较快但不会被保留,一般作为临时表的存储被使用

    3、数据库一般用什么字段作为索引
    4、mybatis工作原理
    5、引入小公司开发的开源组件,产生了bug怎么办?当初怎么考虑的?
    6、Linux,查看进程用了哪些端口号,如何查看建立的连接
    7、Linux上可以生成Excel文件么
    8、如何在jvm启动时提高某个应用的内存
    9、数据库优化
    10、kafka原理
    11、对springboot有哪些了解?用过哪些注解。
    12、springboot和spring的区别
    13、springboot集成mybatis,如何开启驼峰命名法
    14、了解过哪些新技术
    15、long类型的字段,传到前台后面出现00怎么解决
    16、将哪些数据缓存到redis里面,用户更改缓存的数据怎么办?

    17、你参数与了项目的重构,基于什么考虑重构呢?你们项目重构前端使用了angular,花了多长时间学习呢?

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    互联网大厂CTO详解5大软件架构,看完这篇你就秒懂
    5-10年的DBA如何独当一面?这10个建议送给你(附图书工具推荐)
    2020 从新开始:你应该知道的Oracle认证新变化
    Centos7部署NFS实战
    你的公司,远程办公多久了?
    PostgreSQL的几种分布式架构对比
    数据库周刊 | DBA 核心技能
    理解redis 分布式中的分片机制
  • 原文地址:https://www.cnblogs.com/codewy/p/11574530.html
Copyright © 2020-2023  润新知