MySql大致分为三层结构:

  • 第一层:客户端并非MySql所独有,例如:连接处理、授权认证、安全等功能均在这一层处理
  • 第二层:核心服务包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数),所有的跨存储引擎的功能也在这一层实现 : 存储过程、触发器、视图等
  • 第三层:存储引擎:负责 MySQL 中的数据存储和提取,和 Linux 下的文件系统类似,每种存储引擎都有其优势和劣势,中间的服务层通过 API 与存储引擎通信,这些 API接口 屏蔽不同存储引擎间的差异。

1.1连接管理和安全性

每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行。

1.2 并发控制

只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。主要在两个层面上进行解决:服务器层面和存储引擎层。并发控制的常见解决方法就是锁机制:

  • 读写锁:在处理并发读或者写的时候,可以通过实现一个由两种类型的锁组成的锁系统来解决问题:共享锁排它锁,也就是读锁写锁。读锁是共享的,相互之间不会阻塞,多个用户在同一个时刻可以读取同一个数据而互不干扰,而写锁是排他的,一个写锁会阻塞其它的写锁和读锁。
  • 锁粒度:一种提高共享资源并发性的方式就是让锁定对象更具有选择性。尽量锁定需要修改的部分数据,而不是所有的资源。更理想的方式就是只对会修改的数据片段进行精确的锁定。任何时候,锁定的数据量越少,则并发性越强。但是加锁也是需要耗费资源。因此需要平衡。
    • 表锁:是开销最小的策略,它锁定整张表,一个用户在对表进行写操作的时候,需要提前获取写锁。这样会阻塞其他用户对该表的读写操作。只有没有写锁的时候,其它读取的用户才能获得读锁。读锁之间是不会相互阻塞的。
    • 行级锁:行级锁最大程度的支持并发处理。行级锁开销最大。行级锁在存储引擎层面实现。

1.3事务

事务特性:ACID

  • 原子性(Atomicity):一个事务必须看成是不可分割的最小工作单元
  • 一致性(Consistency):数据库总是从一个一致性的状态转换成另外一个一致性的状态
  • 隔离性(Isolation):一个事务所做的修改在提交以前,对其他事务是不可见的。
  • 持久性(Dueability):一旦事务提交,则其所作的修改就会永久保存在数据库中。

隔离级别

  • Read Uncommited (读未提交):事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取没有提交的数据。也叫做脏读。
  • Read commited(读提交):一个事务从开始提交前,所做的任何修改对其他事务是不可见的。这个级别有时候也叫做不可重复读。
  • Repeatable  read(可重复读):该级别保证了在同一个事务中多次读取同样记录的结果是一样的,但是会出现幻读。幻读就是当某个事务在读取某个范围内的记录的时候,另外一个事务又在该范围插入了新的记录,当之前的事务再次读取该范围的记录的时候,会产生幻行。
  • Serializable(可串行化):最高的隔离级别

死锁:两个或者多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环。当多个事务试图以不同的顺序锁定资源的时候,就可能发生死锁。一个常见的死锁解决方法就是:回滚事务

mysql概述的更多相关文章

  1. MySQL 概述和基础

    # MySQL 概述 什么是数据库 存储数据的仓库 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站-- 提供数据库服务的软件 MySQL.Oracle.SQL Server.DB2.M ...

  2. MySql概述及入门(五)

    MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...

  3. MySQL概述及入门(四)

    MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...

  4. MySQL概述及入门(三)

    MySql概述及入门(三) MySQL性能优化 主要优化安全和性能方面 安全方面 : 数据可持续性 性能方面 : 数据的高性能访问 性能优化——慢查询 在MySQL数据库中有一个慢查询日志功能,去获取 ...

  5. MySQL概述及入门(二)

    MySql概述及入门(二) MySQL架构 逻辑架构图: 执行流程图: MySQL的存储引擎 查询数据库支持的存储引擎 执行: show engines: 多存储引擎是mysql有别于其他数据库的一大 ...

  6. MySQL概述及入门(一)

    MySql概述及入门(一) 什么是MySQL?    MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...

  7. 数据库及MySQL概述

    #什么是数据 用来描述事物的符号记录.可以是数字.文字.图形等,有多种形式,经过数字化之后存入计算机 #什么是数据库 数据库(Database)就是一个用来存放数据库的仓库,是按照一定的数据结构来组织 ...

  8. MySQL学习(1)---MySQL概述

    什么是数据库 概述 数据库(Database)是长期存储在计算机内有组织.大量.共享的数据集合.它可以供各种用户共享,具有最小冗余度和较高的数据独立性.数据库管理系统DBMS(Database Man ...

  9. MySQL --概述--

    Mysql是最流行的关系型数据库管理,在Web应用方面MySQL是最好的RDBMS:关系数据库管理系统 什么是数据库? 数据库(Database)是按照数据结构来组织,存储和管理数据的仓库. 每个数据 ...

  10. 1 MySQL概述

    目录: 1. 简述 2. 历史 3. 同类产品 4. 优点和不足 5. MySQL存储引擎 6. MySQL架构 1. 简述 MySQL是一个关系型数据库管理系统.其体积小,速度快,开发源代码,使用成 ...

随机推荐

  1. 大数据时代,Wyn Enterprise和您一起探讨CIO的困境和出路 ZT

    这是一篇知识分享帖,如果您致力于成为一名CIO,希望您能够阅读完,信息虽然简略,但我们依然希望可以帮到您. CIO:首席信息官 CIO是干什么的 一.经典的CIO主要负责什么 1.IT战略规划.IT预 ...

  2. iOS中时间与时间戳的相互转化

    //获取当前系统时间的时间戳 #pragma mark - 获取当前时间的 时间戳 +(NSInteger)getNowTimestamp{ NSDateFormatter *formatter = ...

  3. wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑

    一.添加原生标题栏 添加原生标题栏可以参照 <wap2app(六)-- wap2app的原生标题头无法隐藏>,具体如下: 1.打开 sitemap.json文件 --> page配置 ...

  4. 关于谷歌JSV8与微软JSRT的性能比较

    首先,我并没有得到实际的比较结果,望有兴趣的朋友可以帮助完成这个比较. benchmarksgame,提供了各种语言的性能比较,但都为linux下的测试,很难比较谷歌与微软的东西. 众所周知,JSV8 ...

  5. tab 切换实现方法

    ul li 实现方法(只适用于,一个页面只有一组ul>li) <!--menu--> <div class="nav"> <ul class=& ...

  6. mysql之系统默认数据库

    相关内容: 系统默认数据库information_schema,performance_schema,mysql,test  的意义 首发时间:2018-02-23 17:10 安装mysql完成后, ...

  7. python3接收、解析邮件

    邮件接收 python3可以使用poplib.POP3进行邮件接收,具体如下: import poplib from email.parser import Parser def get_email( ...

  8. 探索SQL Server元数据(二)

    背景 上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据.这一篇中我会介绍如何进一步找到各种有价值的信息.以触发器为例,因为它们往往一起很多问题. 那么如何 ...

  9. 南邮ctf-web的writeup

    WEB 签到题 nctf{flag_admiaanaaaaaaaaaaa} ctrl+u或右键查看源代码即可.在CTF比赛中,代码注释.页面隐藏元素.超链接指向的其他页面.HTTP响应头部都可能隐藏f ...

  10. ASP.NET -- WebForm -- 页面生命周期事件

    ASP.NET -- WebForm --  页面生命周期事件在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件. 1. PreInit: 使用该事件来执行下列操作: 检查 IsPos ...