MySQL数据库介绍

一、什么是数据库

数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。

二、数据库的种类

最常用的数据库模式主要有两种,即关系型数据库非关系型数据库

三、生产环境常用数据库

  • 生产环境主流的关系型数据库:Oracle、Microsoft SQL Server、MySQL/MariaDB等。
  • 生产环境主流的非关系型数据库:MongoDB、Memcached、Redis

四、关系型数据库与非关系型数据库的区别

关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,对传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
=============================================================================
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。

五、数据库系统结构

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

  • DDL语句----数据库定义语言: 数据库、表、视图、索引、存储过程、函数, CREATE DROP ALTER //开发人员
  • DML语句----数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE //开发人员
  • DQL语句----数据库查询语言: 查询数据 SELECT
  • DCL语句----数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

六、数据库引擎

1、数据库引擎的定义

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁定等功能,使用不同的存储引擎,还可以获得特定的功能。MySQL的核心就是存储引擎。

2、数据库引擎的种类

常见的MySQL数据库引擎有以下几个:InnoDBMyISAM、Memory、Archive等。

存储引擎说明
MyISAM在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。拥有较高的插入,查询速度,但不支持事务
lnnoDBMySQL的默认数据库引擎,支持事务和行级锁定,比MyISAM处理速度稍慢
Memory内存存储引擎,拥有较高的插入,更新和查询效率,但会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失
Archive将数据压缩后进行存储,非常适合存储大量的独立的,作为历史记录的数据,但是只能进行插入和查询操作

(1)InnoDB存储引擎

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定;InnoDB是默认的MySQL引擎

InnoDB特点:

支持事务处理,支持崩溃修复和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

(2)MyISAM存储引擎:(了解)

MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。

MyISAM特点:

插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

3、如何选择引擎
  • 如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

  • 如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

  • 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

  • 如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

七、数据库事务

1、事务简介

事务:逻辑单元内的一系列操作,要么全部完成执行,要么全部不执行。

:将某数据的操作加锁,则其他人无法获取当前数据的当前操作。避免单位时间内的数据覆盖,影响数据的一致性。

事务是多个操作的执行逻辑与的集合。事务内控制加锁,实现不同的级别。事务内的锁,需等事务结束才能释放锁。不加事务的锁,操作完即释放锁。

2、事务特性

事务具有四个特性原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。

(1)原子性:事务是应用中不可再分的最小执行体,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。(事务要么成功,要么撤回)

(2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。比如:当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。

(3)隔离性:当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务都是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间不相互影响。(说白了,就是你做你的,我做我的!)定义级别就是为了解决数据在高并发下所产生的问题:脏读、不可重复读、虚读(幻读)。事务隔离级别如下:

事务隔离级别脏读不可重复读幻读
READ_UNCOMMITTED允许允许允许
READ_COMMITTED禁止允许允许
REPEATABLE_READ禁止禁止允许
SERIALIZABLE禁止禁止禁止

从上往下,级别越来越高,并发性越来越差,安全性越来越高,反之则反。

(4)持续性:持续性也称为持久性指事务一旦提交对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库。即使数据库崩溃了,也要保证事务的完整性。

八、其他概念

外键:用于建立表与表之间的关联关系,外键所在的表称为从(子)表。外键所关联的表称为主(父)表。主要作用是保持数据的一致性、完整性。

索引:索引相当于书中的目录,可以提高数据检索的效率,降低数据库的IO的压力。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。

行锁定与锁表:可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的同时也有别人在操作。

事务:事务是由一步或几步数据库的操作。这系列操作要么全部执行,要么全部放弃执行。 事务拥有四大特性(ACID)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值