首页 > 数据库 >1.mysql架构

1.mysql架构

时间:2023-02-14 23:23:11浏览次数:57  
标签:架构 索引 user mysql 范式 权限 连接

mysql架构
  1. mysql的基础架构图

  2. innoDb引擎的4大特性,区别

    1. 插入缓冲(Insert buffer/Change Buffer)

      1. 产生的原因:索引存在在磁盘,主键索引由于天然自增,无须磁盘的随机IO,只需要不断追加,但普通的索引大概率无序,默认情况下需要进入随机磁盘IO操作,效率差(为了解决普通索引插入效率低下
      2. 提升插入性能,Change Buffer是Insert buffer的加强,insert buffer 只针对 insert 有效,Change Buffer对Insert,delete、update(delete+insert)、purge 都有效
      3. 对于普通索引(非聚集索引)不是直接插入到索引页,而是先判断插入的非聚集索引页是否存在缓存池中,如果在直接插入,否则放入Insert buffer对象中,然后以一定频率和辅助索引页子节点进行合并操作,通常能将多个插入合并到一个操作中,提升插入性能
      4. 条件:1. 普通索引(非聚簇索引),2. 非唯一索引如果要保证唯一,每次操作还的去判断当前索引值是否存在,又涉及磁盘随机io)
    2. 二次写

    3. 自适应哈希(AHI)

      1. 该属性通过 innodb_adapitve_hash_index开启,也可以通过 —skip-innodb_adaptive_hash_index参数关闭
      2. InnoDB会监控对表上二级索引的查找,如果某耳机索引被频繁的访问,啧该索引数据会自动呗生成到hash索引里面去,自适应哈希索引通过缓冲池的B+树构造而来,
      3. 缺点: 1. 会占用Innodb_buffer_pool,只适合搜索等值的查询,例如 select * from table where index_col='xxx',而对于其他查找类型,如范围查找是不能使用的
    4. 预读

      • 线性预读
      • 随机预读
  3. 说一下数据库的三大范式

    1. 第一范式
      • 确保每列的原子性(即列不能再分为其他几列
      • img
    2. 第二范式
      • 是在第一范式上建立起来的,即满足第二范式必须满足第一范式
      • 要求确保每个数据表每列与主键相关,而不能只与主键的某个部分相关(主要针对联合主键)(每一行的数据只能与其中的每一列相关,即一行数据做一件事
      • img
    3. 第三范式
      • 确保数据表中每一列数据都与主键直接相关,而不是间接相关
      • img
  4. mysql有关权限的表是哪几个

    • user:记录允许连接到服务器的用户账号信息,里面的权限是全局的
    • db:记录各个账号在各个数据库的操作权限
    • table_priv:记录数据表级的操作权限
    • columns_priv:记录数据列级的操作权限
    • host:配合db权限表对给定主机上数据库级操作权限作更细致的控制
    • Mysql访问控制流程过程:
      1. 用户连接检查阶段:
        1. 当用户连接时,先从user表中的Host,User,Password这三个字段中判断连接的ip,用户名,密码是否存在,匹配不到则拒绝该连接
        2. 检查user表的max_connections和max_user_connections,如果超过上限则拒绝连接
        3. 检查user表的ssl安全连接,如果有配置ssl则需要确定用户提供的证书是否合法,只有上面3个检查都通过后,服务器才建立连接,连接建立后,当用户执行sql语句时,做sql语句执行检查
      2. 执行SQL语句时的检查
        1. 从user表里检查max_question和max_updates,如果超过上限则拒绝访问,下面几步是权限检查
        2. 通过身份认证,进行权限分配,按照user,db,tables_priv,columns_priv 的顺序进行验证,即先检查全局权限表user,如果user中对应的权限为Y,则此用户对数据库的权限都为Y,将不再检查db
      3. Mysql检查权限是一个复杂的过程,启动会将这5张权限表加入到内存
  5. mysql的binlog有几种录入格式,分别有什么区别

    • binlog
  6. 什么是内连接,外连接(左连接,右连接),全连接,外连接,笛卡尔积

    • 内连接
    • img
    • 左连接
      img
    • 右连接
      img
    • 全连接,外连接
      img
    • 笛卡尔积
      img
  7. 链接:

    https://haicoder.net/note/mysql-interview/mysql-interview-mysql-normal-form.html

标签:架构,索引,user,mysql,范式,权限,连接
From: https://www.cnblogs.com/blackamon/p/17121207.html

相关文章

  • 5分钟了解系统架构设计(6)
    最近梳理了之前学习的架构设计相关的一些课程学习总结,将其整理成了一个大纲脑图,以每篇5分钟系列展现出来,希望对你有所帮助。秒杀抢购,是近年来电商系统的常见考点,本篇,我们......
  • sql语气查询去重的两种方法、sql的模糊查询、sql中的日期函数、mysql字符串截取之subs
    sql语气查询去重的两种方法以下两种都可以进行去重查询,区别是:用distinct去重,只能查询到去重的属性那一列,无法查询其他字段用groupby分组查询,可以根据需求查询对应的其......
  • Python 使用mysql.connector、pymysql和 MYSQLdb(MysqlClient)操作MySQL数据库
    MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一。本文主要介绍安装mysql.connector,、pymysql......
  • MySQL SQL题
    1列转行 selectlcase(`name`)as`name`,sum(CASETYPEwhen'Breakfast'THEN`VALUE`else0end)asBreakfast,sum(CASETYPEwhen'Lunch'THEN`VALUE`e......
  • 干货!!!mysql如何进行优化,mysql优化环节
    MySQL优化环节有很多,我个人经验从硬件优化、软件优化、表结构设计、查询语句四个方面来考虑。硬件优化:MySQL软件本身是运行在硬件服务器之上,数据是存储在磁盘的。如果能......
  • mysql交互式外部执行sql语句
    之前一直纠结mysql如何编写交互式脚本,像Oracle那样进行交互式输出,通过Oracle的方式交互式输出在mysql中格式是乱的,最后在网上发现了mysql原来有一个-e选项编写相关脚本如......
  • Mysql数据库安全防护
    1.禁止mysql以管理员的账号权限运行加固方法:在mysql的配置文件my.cnf中配置user=mysql2.设置root用户口令并修改登录名,且不存在空密码账户检查方法:登录mysql之后,输入这个......
  • 浅析云边端协同架构的应用意义与EasyCVR视频融合能力升级
    随着5G时代的到来,万物互联产生了海量数据,据IDC预测,到2025年全球设备连接总数将达到1000亿,集中式处理模型下核心网络无法承载如此大的数据量传输,数据也无法在云中心存储计算,......
  • windows下mysql5.7 更改密码,更改用户名,提高数据库安全性的具体方法。
         一、二话不说,先更改my.ini,位置在 C:\ProgramData\MySQL\MySQLServer5.7,再【mysqld】节点下,增加 skip-grant-tables        这一步切......
  • window10下mysql8.0安装配置
    官网安装​​https://dev.mysql.com/downloads/mysql/​​下载完解压缩至于环境变量是不是必须要配置我不清除反正我是配置了,在Path中加入mysql文件下bin文件夹的路径然......