- 数据库:存储数据库对象的容器,在mysql软件中可分为系统数据库(安装mysql后系统存放一些相关信息的)和用户数据库(用户根据实际需求创建的数据库,我们操作的也基本都是用户数据库)。
- 对于数据库来说它有如下几种操作:
- 查看数据库信息:SHOW DATABASES;查看当前管理的数据库 —>show databases;
- 创建数据库:CREATE DATABASE database_name; 创建一个名为school的数据库 —>create database school;
- 使用一个数据库:USE database_name;使用school数据库 —>use school;
- 删除一个数据库:DROP DATABSAE database_name;删除school数据库 —>drop database school;
- 存储引擎:在具体开发时,为了提高mysql数据库管理系统的使用效率和灵活性,可根据实际需求来选择存储引擎。因为存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。查看mysql所支持的存储引擎 —>SHOW ENGINES;(每一个数据库管理系统都会使用一个默认的存储引擎,mysql以前是MYISAM现在是INNODB,对于默认的存储引擎是可以进行人为修改的)可以使用SQL语句来查看当前数据库管理系统提供的默认的存储引擎
—>show variables like ‘storage_engine%’;
常用存储引擎的比较:
-
myisam存储引擎:由于该存储引擎不支持事务也不支持外键,所以访问速度比较快。因此对事物完整性没有要求并以访问为主的应用适合使用该存储引擎。缺点是锁粒度太粗使得其在读写并重的场景时整体响应速度不甚理想,由于其不支持事务和外键不适用与某些场景。支持三种不同的存储格式:
- 静态表(定长表-FIXED):定义的每一行的长度是固定的;对于CHAR、VARCHAR类型的列会自动填充空格以达到定义的长度;很容易就可以得到磁盘中的数据、文件中定位和查找记录;存储数据较快,易缓存;占用叫动态表多的磁盘空间。
- 动态表(不定长表-DYNAMIC):指表中包含有变长字符类型的列(如:VARCHAR、VARBINARY、BLOB、TEXT),除了字符串长度小于4字节外,其他字符列的长度都是动态的。动态表的处理相比静态表要复杂得多,动态表需要在头部记录该行的长度、数据更新可能会产生存储上的碎片、性能也要比静态表差。但在一些情况下可能会占用更少的磁盘存储空间。
- 压缩格式表:比较特殊的表格式。首先在创建上就比较特殊,只能使用myisampack命令创建,解压则用myisamchk命令;其次使用方式特殊,压缩标识只读的,不支持添加或修改记录。压缩表示基于静态表或动态表格式的,优点在于更加小更节省空间。
- 补充:可以通过ROW-FORMAT选项强制指定对象的存储格式。
—>CREATE TABLE table_name ROW-FORMAT=FIXED,engine=myisam; 创建一个使用myisam存储引擎并且对象格式为定长表的表对象。 CREATE TABLE table_name创建一个名为table_name的表对象。
-
innodb存储引擎:目前的数据库管理系统的默认存储引擎,需要进行频繁的更新、删除操作,同时还对事务的完整性要求比较高,需要实现并发控制,此时适合使用该存储引擎。它具有如下特性:
-
设计遵循ACID模型,支持事务,拥有从服务器崩溃中恢复的能力,能够最大限度地保护用户的数据信息。
-
ACID的四个特性:
- 原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚。
- 一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务在执行之前和之后都得保持一致性。
- 隔离性: 当多个用户并发访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰,多个并发事物之间要相互隔离。
- 持久性:一个事务一旦被提交了,那么对数据库中数据的改变是永久的,即便在操作系统遇到故障的情况下也不会丢失提交事务的操作。
-
-
支持行级锁,通过主键查找数据性能极为优异,在维护数据完整方面支持外键,mysql服务器在启动时能够自动进行故障恢复。
-
拥有独立缓存池,用于存储常用数据或索引,不仅提供一次性读,而且还能够缓存变更的数据以减少磁盘I/O。
-
-
innodb存储引擎下的表空间:
-
系统表空间:只是一个逻辑上的概念,物理上可以对应多个数据文件,并且还可以为不同的数据文件定义不同的路径及文件大小。
-
多重表空间:每个表对象拥有一个独享的.idb为扩展名的数据文件,这个文件就是一个独立的表空间。
-
多重表空间相较于系统表空间的优点:
- 各表对象的数据独立存储至不同的文件,可以更灵活的分散I/O、执行备份及恢复操作。
- 能够支持压缩存储数据。
- 当执行TRUNCATE/DROP删除表对象时,空间可以及时释放回操作系统层。
- 空间自动配置,无需额外配置。
-
-
memory存储引擎:该存储引擎使用内存来存储数据,因此该存储引擎的访问速度快,但是安全上没有保障。如果应用中涉及数据比较少,需要进行快速访问,则是和使用该存储引擎。