mysql概述
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概述的更多相关文章
- MySQL 概述和基础
# MySQL 概述 什么是数据库 存储数据的仓库 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站-- 提供数据库服务的软件 MySQL.Oracle.SQL Server.DB2.M ...
- MySql概述及入门(五)
MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...
- MySQL概述及入门(四)
MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...
- MySQL概述及入门(三)
MySql概述及入门(三) MySQL性能优化 主要优化安全和性能方面 安全方面 : 数据可持续性 性能方面 : 数据的高性能访问 性能优化——慢查询 在MySQL数据库中有一个慢查询日志功能,去获取 ...
- MySQL概述及入门(二)
MySql概述及入门(二) MySQL架构 逻辑架构图: 执行流程图: MySQL的存储引擎 查询数据库支持的存储引擎 执行: show engines: 多存储引擎是mysql有别于其他数据库的一大 ...
- MySQL概述及入门(一)
MySql概述及入门(一) 什么是MySQL? MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...
- 数据库及MySQL概述
#什么是数据 用来描述事物的符号记录.可以是数字.文字.图形等,有多种形式,经过数字化之后存入计算机 #什么是数据库 数据库(Database)就是一个用来存放数据库的仓库,是按照一定的数据结构来组织 ...
- MySQL学习(1)---MySQL概述
什么是数据库 概述 数据库(Database)是长期存储在计算机内有组织.大量.共享的数据集合.它可以供各种用户共享,具有最小冗余度和较高的数据独立性.数据库管理系统DBMS(Database Man ...
- MySQL --概述--
Mysql是最流行的关系型数据库管理,在Web应用方面MySQL是最好的RDBMS:关系数据库管理系统 什么是数据库? 数据库(Database)是按照数据结构来组织,存储和管理数据的仓库. 每个数据 ...
- 1 MySQL概述
目录: 1. 简述 2. 历史 3. 同类产品 4. 优点和不足 5. MySQL存储引擎 6. MySQL架构 1. 简述 MySQL是一个关系型数据库管理系统.其体积小,速度快,开发源代码,使用成 ...
随机推荐
- 一个简单的scrollTop动画的方法
var autoScrollTop = function (param) { var delay = param.scrollDom.height() * 20; param.dom.animate( ...
- Android笔试题三
1.java堆得Young区由哪些组成: Java堆由Perm区和Heap区组成,Heap区由Old区和New区(也叫Young区)组成,New区由Eden区.From区和To区(Survivor)组 ...
- 浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
- java 大文件分割与组装
不多说,直接上代码 1 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im ...
- (网页)jQuery判断checkbox是否选中的方法
if($('#checkbox-id').is(':checked')) { // do something} if ($('#checkbox-id').attr('checked')) { ...
- 记CSS格式化上下文
fomatting context 引言 主要讲解的是BFC上下文 本文是查看 史上最全面.最透彻的BFC原理剖析 的笔记 所以不会详解BFC, 只是记录学习心得, 以及重要规则避免原文失效 简介 F ...
- matlab练习程序(点云表面法向量)
思路还是很容易想到的: 1.首先使用KD树寻找当前点邻域的N个点,这里取了10个,直接调用了vlfeat. 2.用最小二乘估计当前邻域点组成的平面,得到法向量. 3.根据当前邻域点平均值确定邻域质心, ...
- redis sentinel集群的搭建
背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...
- [20181116]18c DML 日志优化.txt
[20181116]18c DML 日志优化.txt 1.环境:xxxxxxxx> select banner_full from v$version;BANNER_FULL---------- ...
- 用好lua+unity,让性能飞起来——关于《Unity项目常见Lua解决方案性能比较》的一些补充
<Unity项目常见Lua解决方案性能比较>,这篇文章对比了现在主流几个lua+unity的方案 http://blog.uwa4d.com/archives/lua_perf.html ...