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是一个关系型数据库管理系统.其体积小,速度快,开发源代码,使用成 ...
随机推荐
- HTML5中的input type为file控件限制上传文件类型及扩展
简单介绍 input file控件限制上传文件类型如下:1.文件类型中间用,分开:2.html和htm这样的要写成两个: 3实例: <input type="file" na ...
- 实战 | Android中文图混排时文图的居中对齐 FontMetrics以及自定义ImageSpan实现
这个标题有点长,乍一看这么个标题你可能没明白啥意思,且听我慢慢道来. 公司的项目中新增了一个“心动” 的功能,用户初次使用时需要给一个引导页,就是下面图中的这个样子(这就是做完之后的效果了). 在上图 ...
- Android为TV端助力 同时setTag两次,保存多种值
示例代码: view.setTag(R.string.action_settings,hodler.content); 接收两个值,一个是key值,必须是唯一值,而且要写在values/ids.xml ...
- ionic提示弹框
//提示框 .factory('TipsPort', function ($ionicPopup) { var TipsPort = function (tipsText, SureFunction, ...
- 搞懂Xamarin.Forms布局,看这篇应该就够了吧
Xamarin.Forms 布局介绍 什么是布局?可以简单的理解为,我们通过将布局元素有效的组织起来,让屏幕变成我们想要的样子! 我们通过画图的方式来描述一下Xamarin.Forms的布局. 小节锚 ...
- Android内存优化(一)Dalvik虚拟机和ART虚拟机对比
1.概述 Android4.4以上开始使用ART虚拟机,在此之前我们一直使用的Dalvik虚拟机,那么为什么Google突然换了Android运行的虚拟机呢?答案只有一个:ART虚拟机更优秀. 2.D ...
- WPF:解决DataGrid横向滚动条无法显示的问题
DataGrid的最后一列的宽度设置为“Width=”auto””即可. 如果显示指定长度或者设置为“*”,那么不管怎么拖动列头,或者不管行里面的内容有没有超过DataGrid的显示区域,DataGr ...
- seajs的原理以及基本使用
seajs模块化开发 模块化开发,把整个文件分割成一个一个小文件. 使用方法 使用方法特别简单,首先在官网中下载sea.js,然后在页面中引入. index.html // 1.路径 // 2.回调 ...
- WSL优化 (Windows Subsystem for Linux) Linux子系统优化配置
目录 wsl优化 (Windows Subsystem for Linux) Linux子系统优化 1. 永久修改wsl终端字体 2. 修改Linux终端配色 3. 添加WSL到右键菜单 wsl优化 ...
- SQL Server中sp_spaceused统计数据使用的空间总量不正确的原因
很多时候,我们经常使用sp_spaceused来查看表的空间使用情况,上个月群里有个网友说他使用DELETE删除了数据后,使用sp_spaceused查看,发现该表的分配的空间总量(reserved) ...