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是一个关系型数据库管理系统.其体积小,速度快,开发源代码,使用成 ...
随机推荐
- iOS中时间与时间戳的相互转化
//获取当前系统时间的时间戳 #pragma mark - 获取当前时间的 时间戳 +(NSInteger)getNowTimestamp{ NSDateFormatter *formatter = ...
- Android样式主题及自定义属性
一.Selector——图形.颜色选择器 语法 <selector> <item android:drawable=“drawableResA” android:state_xx ...
- C# 利用Log4Net进行日志记录
概述 本文主要简单说明如何使用Log4Net进行日志记录,在程序开发过程中记录日志的优点: 它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug: 一旦在程序中加入了Log 输出 ...
- 数学建模-灰色预测模型GM(1,1)_MATLAB
GM(1,1).m %建立符号变量a(发展系数)和b(灰作用量) syms a b; c = [a b]'; %原始数列 A A = [174, 179, 183, 189, 207, 234, 22 ...
- chrome正确的打开方式
1:修改默认的搜索引擎 原因是中国不能使用Google浏览器,所以需要对其默认的搜索引擎进行改造: 三个点/设置/修改默认搜索引擎 2:使用插件; 右上角的省略号小点/更多工具/扩展应 ...
- (jQuery插件)autocomplete插件的简单例子
1.引入相应的js和css,我用到的时候是在jquery-ui的js里面整合的,ui的css 2.先在html上写一个input <input id="tags" class ...
- centos7安装配置redis
1.下载redis > cd /usr/local/src #文件下载目录 > curl -O http://download.redis.io/releases/redis-3.2.8. ...
- spring静态代理和动态代理
本节要点: Java静态代理 Jdk动态代理 1 面向对象设计思想遇到的问题 在传统OOP编程里以对象为核心,并通过对象之间的协作来形成一个完整的软件功能,由于对象可以继承,因此我们可以把具有相同功能 ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板
使用Visual Studio Team Services敏捷规划和项目组合管理(三)--使用Kanban板 1.要查看Kanban板,请单击Work>Backlogs页面上的Board 链接. ...
- SQL中常用数学函数
--1 RAND() 返回0到1的随机值,若不指定随机种子,返回值不同;若指定的种子相同则随机值相同SELECT RAND()SELECT RAND()SELECT RAND(100)SELECT R ...