数据库允许多个客户端同时访问。当这些客户端并发访问数据库中同一部分的数据时,如果没有采取必要的隔离措施就容易造成并发一致性问题,从而破坏数据的完整性。考虑下图的场景: 在时间点1上,var的数值是100。客户端A在时间点2的时候更新了它的值为200,但没有提交事务。在时间点3的时候,客户端B读取到了客户端A还未提交的数值200。但在时间点4,客户端A执行了回滚操作。那么,对于客户端B来说,如果
数据库是用来存储数据的,数据库实例是用来操作数据的。从操作系统的角度看,数据库实例表现为一个进程,对应多个线程。在非集群数据库架构中,数据库与数据库实例存在一一对应关系,在数据库集群中,可能存在多个数据库实例操作一个数据库情况,即多对一关系。MySQL允许在同一个宿主机上运行多个MySQL数据库服务,这就是MySQL的多实例环境 一、 什么是多实例? 多实例就是一台服务器上开启多个不同的服务端口
MySQL数据库中包含各自数据库对象,常见的数据库对象有:表、索引、视图、事件、存储过程和存储函数等等。 点击这里查看视频讲解:【赵渝强老师】:MySQL中的数据库对象 一、 创建与管理表 表是一种非常重要的数据库对象,MySQL数据库的数据都是存储在表中。MySQL的表是一种二维结构,由行和列组成。表有列组成,列有列的数据类型。下面通过具体的步骤来演示如何操作MySQL的
MySQL在备份方面包含了自身的mysqldump工具,但其只支持单线程工作,这就使得它无法迅速的备份数据。而mydumper作为一个实用工具,能够良好支持多线程工作,这使得它在处理速度方面十倍于传统的mysqldump。其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可
MySQL可以使用select...into outfile语句将表的内容导出为一个文本文件。其基本的语法格式如下: select [列名] from 表名 [WHERE 语句] into outfile '目标文件' [其他选项]; 该语句分为两个部分。前半部分是一个普通的select语句,通过这个select语句来查询所需要的数据;后半部分是导出数据的。其中,“目标文件”参数指出将查询的记
mysqldump 是MySQL自带的逻辑备份工具。它的备份原理是通过协议连接到MySQL数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时,只要执行这些insert语句,即可将对应的数据还原。下面语句可以列出mysqldump的帮助信息。 mysqldump --help # 输出的信息如下: mysqldump Ver 8.0.20
MySQL支持多种方式的备份与恢复,下面详细介绍了每种备份与恢复方式的含义以及它们之间的区别。 点击这里查看视频讲解:【赵渝强老师】:MySQL的备份方案 一、 物理备份与逻辑备份 数据库从存储上看主要由数据库的物理数据文件、日志文件及配置文件等组成。数据库的物理备份是指备份时直接复制备份这些数据库的文件。 数据库逻辑备份就是备份软件按照最初设计的逻辑关系,以数据库的逻辑结
InnoDB是当前MySQL的默认的存储引擎,也是互联网等公司数据库存储引擎的不二选择。InnoDB的特性如下: 支持数据库事务。在可重复读的隔离级别下,解决了不可重复读的问题。并且通过间隙锁的引入解决了幻读的问题。 支持行级锁和表级锁。默认是行级锁,因此具备更高的并发度。 支持外键。 为处理巨大数据量时的最佳性能而设计。CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。 In
冷备份是指发生在数据库已经正常关闭的情况下进行的备份。由于此时数据库已经关闭,通过冷备份可以将数据库的关键性文件拷贝到另外存储位置。冷备份因为只是拷贝文件,因此备份的速度非常快。在执行恢复时,只需将文件再拷贝回去就可以很容易恢复到某个时间点上。冷备份的最大缺点在于在冷备份过程中,数据库必须是关闭状态,不能提供外部的访问。 在了解到了基础的知识以后,这里将通过一个简单的示例来演示如何操作M
在早期的MySQL数据库中,用户的密码是保存在“mysql.user”表中的“password”字段中。但是从MySQL 5.7版本开始“password”字段改成“authentication_string”字段。例如,下面的语句将查询MySQL中用户的密码。 mysql> select host,user,authentication_string from user; # 输出
对于MySQL来说,虽然经历了多个版本迭代,并且也存在不同的分支。但是MySQL数据库的基础架构基本都是一致的。下图展示了MySQL的体系架构。 点击这里查看视频讲解:【赵渝强老师】:MySQL的体系架构 一、MySQL Server层 MySQL的Server层主要有以下7个组件:MySQL向外提供的交互接口(Connectors)、连接池组件(Connecti
MySQL的存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。 提示:通过“show create table”可以看出创建表时使用的存储引擎。例如,下图中的test1表使用的就是InnoDB的存储引擎。 数据库中的表如
MySQL访问控制实际上由两个功能模块共同完成的:一个模块是用户管理模块;而另一个是访问控制模块。用户管理模块主要是验证用户的合法性,是否能够访问MySQL数据库;而访问控制模块则需要根据权限系统表中存储的权限信息来决定用户用户什么样的权限。 点击这里查看视频讲解:【赵渝强老师】:MySQL访问控制的实现 下图MySQL访问控制中的用户管理模块和访问控制模块之间的关
MySQL数据库安装成功后,就可以通过MySQL提供的命令脚本来启动MySQL数据库服务器了。 点击这里查看视频讲解:【赵渝强老师】:启动与关闭MySQL 下面是具体的操作步骤。 (1)启动MySQL数据库。 cd /usr/local/mysql support-files/mysql.server start # 输出的信息如下: Starting MySQL.
在MySQL5.1版本之前,默认的存储引擎是MyISAM。该存储引擎管理非事务表,是ISAM 的扩展格式。除了提供ISAM里所没有的索引的字段管理的功能外,MyISAM 还使用一种表格锁定的机制来优化多个并发的读写操作。 点击这里查看视频讲解:【赵渝强老师】:MySQL的MyISAM存储引擎 MyISAM 提供高速存储和检索,以及全文搜索能力。MyIASM存储引擎的特性
在MySQL数据库中,用户信息、用户的密码、删除用户及分配权限等就是存储在MySQL数据库的"mysql.user"表中。下面展示了该表的部分字段信息: 数据库安装配置成功后,MySQL就创建了几个默认的用户。下表列举了这些用户以及他们的作用。 点击这里查看视频讲解:【赵渝强老师】:管理MySQL的用户 一、创建MySQL的用户 在MyS
MySQL数据库服务器成功启动后,可以通过多种不同的方式进行连接。连接方式主要有:本地连接、远程连接和安全连接。下面通过具体的步骤来演示如何使用它们。 点击这里查看视频讲解:【赵渝强老师】:MySQL的连接方式 一、本地连接 (1)在CentOS的命令终端中直接输入下面的命令,并使用root用户登录MySQL,输入“/usr/local/mysql/data/error
MySQL与Oracle一样都是通过逻辑存储结构来管理物理存储结构,即管理硬盘上存储的各种文件。下面将详细介绍InnoDB存储引擎中的撤销日志文件和错误日志文件。 一、MySQL的撤销日志文件(undo log) undo log中记录的是旧版本的数据,当我们对记录做了变更操作时就会产生undo记录。当一个旧的事务需要读取数据时,为了能读取到老版本的数据,需要顺着undo链找到满足其可见性的记录
对数据库进行基准测试,以掌握数据库的性能情况是非常必要的。因此对数据库的性能指标进行定量的、可复现的、可对比的测试就显得非常的重要。 一、MySQL的基准测试与sysbench MySQL的基准测试可以理解为是对数据库运行时的一种压力测试。但这样的测试不关心业务逻辑,更加简单、直接、易于测试。测试时使用的数据可以由工具生成,不要求真实。MySQL数据库基准测试时的关键指标包括以下3个方面: T
InnoDB存储引擎目前是MySQL默认的存储引擎,它主要由三部分组成,分别是:存储结构、内存结构和线程结构。InnoDB的存储结构又可以分为逻辑存储结构和物理存储结构。InnoDB存储引擎的逻辑存储结构和Oracle大致相同,所有数据都被逻辑地存放在一个空间中,我们称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。 点
MySQL的慢查询日志可以把超过参数long_query_time时间的所有SQL语句记录进来,帮助DBA人员优化所有有问题的SQL语句。通过mysqldumpslow工具可以查看慢查询日志。 点击这里查看视频讲解:【赵渝强老师】:MySQL的慢查询日志 下面通过具体的演示来说明如何使用MySQL的慢查询日志。 (1)查看是否开启了慢查询日志功能 mysql> sho
MySQL的binlog日志文件(也叫做:二进制日志)记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。若操作本身并没有导致数据库发生变化,那么该操作不会被写入binlog。binlog日志文件的主要作用: 可以完成主从复制。在主服务器上把所有修改数据的操作记录到binlog中,通过网络发送给从服务器,从而达到主从同步。 进
MySQL的全量日志(general log)会记录MySQL数据库所有操作的SQL语句,包含select和show。默认情况下,禁用全量日志。 点击这里查看视频讲解:【赵渝强老师】:MySQL的全量日志文件 下面通过具体的步骤来演示如何使用全量日志。 (1)查看是否启用全量日志 mysql> show variables like '%general_log%';
MySQL的InnoDB存储引擎的逻辑存储结构和Oracle大致相同,所有数据都被逻辑地存放在一个空间中,我们称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。InnoDB存储引擎的逻辑存储结构大致如下图所示。 下面重点到了一下MySQL InnoDB的段、区和页。 点击这里查看视频讲解:【赵渝强老师】:MySQL I
MySQL与Oracle一样都是通过逻辑存储结构来管理物理存储结构,即管理硬盘上存储的各种文件。下面将详细介绍InnoDB存储引擎中的数据文件和重做日志文件。 一、数据文件 “.ibd”文件和ibdata文件 这两种文件都是存放Innodb数据的文件,之所以有两种文件来存放Innodb的数据(包括索引),是因为 Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享
在MySQL实例启动时,数据库会先去读一个配置参数文件(my.cnf),用来寻找数据库的各种文件所在位置以及指定某些初始化参数。在默认情况下,MySQL实例会按照一定的顺序在指定的位置进行读取,通过下面的语句可以查看读取参数文件的顺序。 mysql --help | grep my.cnf # 输出的信息如下: /etc/my.cnf /etc/mysql/my.cnf /usr/local/
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号