zoukankan      html  css  js  c++  java
  • 数据库原理与mysql

    1.数据库类别、关系型数据库和非关系型数据库的区别
    https://blog.csdn.net/qq_27565769/article/details/80731213
    https://blog.csdn.net/qq_33472765/article/details/81515251

    2.SQL语句

    3.SQL内连接与外连接
    相对于连接查询来说的,根据on连接的那个字段来划分,内连接是返回两个表中都存在的内容,外连接又分为左外连接和右外连接,左外连接是返回左表中含有的内容,涉及到右表字段的内容,若右表中不含有该id对应的字段,写上NULL;右外连接是以右表ID为基准,当左边字段中对应ID的值不存在,那么在最后的连接结果上补NULL。

    4.索引类型和原理
    B+树索引
    哈希索引
    全文索引
    空间数据索引

    5.SQL事务实现原理(ACID)
    原子性:事务被视为不可分割的单元,事务所包含的操作要么全部执行成功,要么失败全部回滚
    一致性:数据库在事务执行前后的状态要保持一致,即所有事务对同一个数据的读取结果是相同的
    隔离性:一个事务所做的修改在最终提交之前对其他事务是不可见的
    持久性:一旦事务被提交,那么事务结果将永远保留在数据库中,即使数据库崩溃,事务执行的结果也不能丢失
    事务在并发情况下会出现并发一致性问题,使用封锁技术可以解决,mysql数据库提供了四个隔离标准帮助解决并发一致性问题。

    6.数据存储引擎
    innoDB
    MyISAM

    7.主从复制和读写分离
    binlog线程:将主服务器中的操作都存在一个二进制日志文件中
    I/O线程:读取二进制文件,并将其写入到从服务器的中继日志中
    SQL线程:读取中继日志,并在从服务器中执行这些操作(重放)

    做缓存,增加数据冗余保证可用性;
    主服务器做写操作与实时性要求比较高的操作,从服务器做读操作,缓解锁争用,提高效率;
    从服务器可以使用myisam引擎,提高系统查询性能,节约系统开销;

    8.SQL日志系统redo log(重做日志),undo log(回滚日志),bin log(二进制日志)

    9.MVCC多版本并发控制
    让写操作去写最新的版本快照,读操作读旧的版本快照
    事务的每一个修改操作都会为数据行增加一个版本快照
    脏读和不可重复读本质上是读取了别的事务未提交的修改,而MVCC规定,事务只能读取已经提交的版本快照
    版本号标志事务的版本
    Undo日志,回滚指针连接数据行的版本快照
    readView未提交事务列表,记录未提交的事务版本号,还包含minID,maxID,注意列表中的版本号虽然是按照顺序进行存储的,但是不是每一个都存在,会有某一个中间事务已经提交
    进行查询时,比较事务id与minID和maxID之间的关系,并且查看事务id是否存在与readView列表中,进行快照的选取

    10.SQL优化思路
    explain分析:重点关注select操作的查询类型、使用的索引、扫描的行数
    优化数据访问:减少请求的数据量;减少服务器端扫描的行数
    重构查询方式:切分大查询;分解大连接查询

    11.范式理论
    https://blog.csdn.net/yyp0304Devin/article/details/81158133
    关系型模型的核心:规范化,把数据库组织成保证存储数据完整性的同时最小化冗余数据的结构
    第一范式:数组的每一个属性只能包含一个值;关系中的每一个数组必须包含相同数量的值;关系中的每一个数组一定不能相同
    第二范式:在第一范式基础上,该数据表中任何一个非主键字段的值都依赖于主键字段
    第三范式:在第二范式基础上,该数据表中任何两个非主键字段之间不存在依赖关系

    12.数据库高并发
    水平拆分
    垂直拆分

  • 相关阅读:
    iOS--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook等系统服务开发汇总
    iOS-网络爬虫
    iOS-性能优化
    iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
    深入解析Linux内核及其相关架构的依赖关系
    详解Linux系统中的文件名和文件种类以及文件权限
    Linux系统中使用netcat命令的奇技淫巧
    Linux系统下强大的lsof命令使用宝典
    Linux下多线程下载工具MWget和Axel使用介绍
    Linux下针对路由功能配置iptables的方法详解
  • 原文地址:https://www.cnblogs.com/sunshine-free/p/13870292.html
Copyright © 2011-2022 走看看