比如数据库名称old_db想改名为new_db MySQL修改数据库名称比较麻烦,不支持直接修改,需要通过其它方式间接达到修改数据库名称的目的。...在 MySQL 5.1.23 之前的旧版本中,我们可以使用 RENAME DATABASE 来重命名数据库,但此后版本,因为安全考虑,删掉了这一条命令。...方法一:先导出数据,再导入数据 当数据库体积比较小时,最快的方法是使用mysqldump命令来创建整个数据库的转存副本,然后新建数据库,再把副本导入到新数据库中。...方法二:通过修改表名称,间接实现修改数据库名称 使用此方法实际上将所有表从一个数据库移动到另一个数据库,这实际上重命名了该数据库(MySQL没有单个语句的操作),移动后原始数据库继续存在,但是里面没有表...$table"done mysql登陆命令行参数 -e, —execute=name # 执行mysql的sql语句 -N, —skip-column-names # 不显示列信息 -s, —silent
一、MySQL数据库备份之逻辑备份 1.命令简介: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 1)关于数据库名: -A, --all-databases... 所有库 school 数据库名 school stu_info t1 school 数据库的表stu_info、t1 -B, --databases... | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec) mysql> 2)逻辑备份: [root@localhost ~]#...刷新授权 【备份时密码 】 注:如果不是一个新的数据库环境,我们需要从第一步开始,如果已经是一个新的数据环境,我们可以直接从第5步执行。...[root@localhost ~]# 7)建议在逻辑备份恢复时,暂停BINLOG mysql> SET SQL_LOG_BIN=0; Query OK, 0 rows affected (0.02 sec
1.MySQL简介 和其他数据库系统相比, MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。...为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。MySQL的灵活性体现在很多方面。例如,你可以通过配置使它在不同的硬件上都运行得很好,也可以支持多种不同的数据类型。...2.MySQL逻辑架构 了解MySQL各组件之间如何协同工作的架构,会有助于深人理解MySQL服务器。图1-1展示了MySQL的逻辑架构图。 ?...第二层架构是MySQL比较有意思的部分。...一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限(例如,是否允许客户端对world数据库的Country表执行SELECT语句)。
Mysql的逻辑架构图 ? 相信很少有人看过这个图,因为我刚看见的时候也是挺萌的,在工作中一般大家都用的是Mysql也都会用,但是为啥要看这个呢,我们需要对Mysql的整体有一个简单的认知!...Mysql是分层的 整体分为 Connectors:连接驱动 Enterprise Management Services & Utillties :服务管理器和一些工具 Connection Pool...有这么对存储引擎[捂脸] file system:文件系统 也就是C盘D盘只不过图上画的是分了NTFS和SAN files & log : 文件与日志 是不是看完对Mysql又有了一个全新的认识;我也是...由此可见在经过SQL优化器之后,where 1=1被优化掉了,在Mysql看来有where和没有where的执行结果是一致的 源SQL explain select * from esp_76 where...由此可见因为ID是主键,所以不可能为null,所以Mysql在extra中表示出这条SQL是没有返回结果的,并且table字段也是空的,干脆连表都不扫描了 这就是SQL的优化器 太困了,下一章说存储引擎
mysql逻辑分层: 1.client ==>连接层 ==>服务层==>引擎层==>存储层 server 2.连接层: 提供与客户端连接的服务 3.服务层: 1.提供各种用户使用的接口(增删改查...),sql解析 sql的解析过程比如: from ... on ... where ... group by ... having ... select ... order by...... limit 2.提供SQL优化器(MySQL Query Optimizer),重写查询,决定表的读取顺序,选择合适的索引 mysql的hint关键字有很多比如:SQL_NO_CACHE...innoDB和MyISAM 1.innoDB:事务优先(适合高并发修改操作;行锁) 2.MyISAM:读性能优先 3.show engines;查询支持哪些引擎 4.查看当前默认的引擎
MySQL的逻辑架构 1.1 MySQL的简单结构 ? MySQL架构总共三层,在上图中以虚线作为划分。 ...存储引擎接口 MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。...MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎开发者都可以按照自己的意愿来进行开发...注意:存储引擎是基于表的,而不是数据库。 1.3 MySQL的工作流程 最上层:客户端连接 1、连接处理:客户端同数据库服务层建立TCP连接,连接管理模块会建立连接,并请求一个连接线程。...3、如果查询缓存中没有结果,就需要真的查询数据库引擎层了,于是发给SQL优化器,进行查询的优化。
*** 逻辑架构 逻辑架构剖析 Connectors 第一层:连接层 第二层:服务层 第三层:引擎层 存储层 SQL执行流程 MySQL的SQL执行流程 MySQL中的执行原理 数据库缓冲池(buffer...比如表缓存,记录缓存,key缓存,权限缓存等 这个查询缓存可以在不同客户端共享 从MySQL5.7.20开始,不推荐使用查询缓存,并在MySQL8中删除 第三层:引擎层 和其他数据库相比,MySQL...在查询优化器中,可以分为逻辑查询优化阶段和物理查询优化阶段 逻辑查询优化就是通过改变SQL语句的内容来使得SQL查询更加高效,同时为物理查询优化提供更多的候选执行计划。...缓冲池服务于数据库整体的I/O操作,它们的共同点都是通过缓存的机制来提升效率 缓存池如何读取数据 缓冲池管理器会尽量将使用的数据保存起来,在数据库进行页面操作读操作的时候,首先会判断该页是否存在缓冲池中...实际上,当我们对数据库中的记录进行修改的时候,首先会修改缓冲池中页里面的记录信息,然后数据库会以一定的频率刷新到磁盘。缓冲池会采用一种叫做checkpoint的机制将数据回写到磁盘上。
索引的底层结构首先,MySQL索引的存储不仅仅只有B+Tree的结构,还有Hash和全文,这个在创建索引时可以指定。...MySQL中常用的InnoDB存储引擎默认使用B+Tree结构,毕竟使用MySQL时范围查找的场景是最多的,当然如果等值查询比如热点数据这种场景可以使用Hash索引,如果有大量的文本数据需要搜索和处理,...goods表中的这些数据在B+Tree中的逻辑结构如下图可以看到在非叶子节点上只存放了主键列的值,而叶子节点存放了主键对应的整行数据,这种索引又叫「聚簇索引」 也叫「主键索引」 。...这里为goods_no、goods_name列创建一个普通索引后,表中的数据在这个索引中逻辑结构如下图可以看到在普通索引中每个非叶子节点的键值存放的是索引列的数据,而叶子节点不仅存放了索引列的数据,还存放了对应的主键值...索引的命中逻辑那么,问:那么请问,当执行以下sql时会使用哪个索引?为什么?
我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。...当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。...由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为 O(h) ,效率明显比 B-Tree 差很多。...总结 本文以 MySQL 数据库为研究对象,讨论与数据库索引相关的一些话题。...特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 B-Tree 索引,哈希索引,全文索引等等。
一、概述 深入学习MySQL,从概览MySQL逻辑架构开始。...首先来看一下MySQL的逻辑架构图: 逻辑架构1.jpg 存储引擎架构分为三层,自上而下,分为第一层:连接层;第二层:服务层;第三层:引擎层。...“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。...七、问题1:MySQL的工作流程 MySQL的工作流程.jpg 最上层:客户端连接 1、连接处理:客户端同数据库服务层建立TCP连接,连接管理模块会建立连接,并请求一个连接线程。.... ----- 参考自MySQL实战45讲> 01节课后讨论@圈圈圆圆的回答. ---- 参考资料 [1] MYSQL提升笔记(1):MySQL逻辑架构 [2] MySQL 高级-MySQL逻辑架构图简介
本文旨在从select语句的解析和执行过程, 了解 MySQL的逻辑结构。 先看 select语句执行时都要经过哪些模块处理....了解了MySQL的整体结构之后, 我们再针对各功能模块逐一说明. 1. 连接器 负责建立连接、维持和管理连接, 以及验证权限。...用户登录认证通过之后, 连接器会从权限表中查出对应的权限, 之后该连接相关的所有权限判断, 都依赖于此时读到的权限. 即使管理员账号对这个用户的权限做了修改, 也不会影响已经存在连接的权限。...对需要使用查询缓存的语句, 可以用 SQL_CACHE 显式指定. select SQL_CACHE * from t where id=10; 注意: 在 MySQL8中已经彻底删除了缓存模块, 可见官方对它的不认可了...通过以上介绍, 脑中是不已经有了 MySQL 的轮廓了.
一,MySQL逻辑架构 第一层的服务不是MySQL独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等。 第二层架构是MySQL比较有意思的部分。...这层是MySQL的核心服务功能,包含:查询解析、分析、优化、缓存以及所有的内置函数(例如日期、时间、数学运算)所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。 第三层是存储引擎。...存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。...服务器会负责缓存线程,不需要为每一个新的连接创建和销毁线程。MySQL提供了一个API,支持线程池插件,可以使用池中少量的线程来服务大量的连接。...三、优化与执行 MySQL会解析查询,并创建内部数据结构(解析树),然后对查询进行优化,包括重写查询、决定表的读取顺序,选择合适的索引等。用户可以通过特殊的关键字提示优化器,影响它的决策过程。
用了那么长时间的MySQL,sql语句相信早已烂熟于心,于是,我就试着去了解它的执行原理,以下是我学习过程中的总结要点。 只要是B/S架构,都是会有客户端与服务端,mysql也不例外。...逻辑分层 首先可以把服务端想象成一个大的容器,里面有四层结构,当一个请求过来后,将会执行这四层,执行一遍后才会返回给我们想要的结果。...你写的跟之前的已经不是一致的了 第三层:引擎层 它提供了各种存储数据的方式,常见的有:lnnoDB、MylSAM 重点区别: lnnoDB 【Mysql默认】:它在设计的时候,它是事物优先 【适合高并发操作...show engines;查看Mysql所支持的所有引擎 执行结果: yes就是支持,在InnoDB支持选项是DEFAULT(默认)也就说明,当我们创建数据库的时候默认引擎就是InnoDB 查看当前数据库使用的引擎...用MylSAM,因为我想让它性能优先,下面我就使用mysql命令行进行创建表 1.指定数据库指令:use 数据库名 2.在指定的数据库中创建一张简单的表 create table tb( id int
MySQL 备份之 into outfile 逻辑数据导出(备份) 用法: select xxx into outfile '/path/file' from table_name; mysql...,如果是多列的话用逗号隔开 逻辑数据导入(恢复) 方法一: load data local infile '/path/file' into table table_name; mysql>...方法二: # mysqlimport dbname /path/filename 说明:filename 必须和数据库里面表名一样 综合示例 例一 # 创建表 mysql> create table...--------------------+------------------------+----------------+ 34 rows in set (0.00 sec) 例三 把用户登录系统的信息存储到数据库里...需要显示如下: select username 用户名, tty 登录终端, ip 来源IP from login; 创建数据库 mysql> create table login( username
如果是针对innodb的表进行备份由于innodb是事务型的引擎,会话与会话之间是隔离的,所以备份的时候不影响数据库的正常使用,无需锁表 --lock-tables 如果备份的数据库里的表与其他库没有关系的话...,那么只需要锁定该库下的表就可以了 --lock-all-tables 如果备份的数据库里的表与其他库有关系的话,那么需要锁定整个mysql数据库的所有库下的所有表 --flush-logs,...-p123 db01 < /tmp/mysqlback/table01.sql 或者在mysql数据库内使用source命令来执行外部的sql文件 mysql> source /tmp/mysqlback...,那么恢复的时候会恢复失败,因为mysql库里面不仅记录了用户信息等还记录了数据库表结构等。...--start-position=120 --stop-position=802 /data/DB/mysql-bin.000008 |mysql -p123 恢复完成后进入数据库查看是否存在刚刚添加的数据
一、整体架构图 MySql和其它数据库相比,它的优势在于它的架构可以在多种不同场景中应用并且发挥良好。...这一点主要体现在引擎层上,MySql的引擎是可拔插式的,业务处理和引擎是分离的,因此可以根据不同的业务需求选择不同的引擎来进行处理,甚至现有的引擎都不符合你的需求,你可以定制MySql引擎。...线程池的概念就是为通过安全认证接入的客户端提供线程。 2.2、服务层 服务层平常也称之为逻辑处理层。...因为MySql的引擎是可拔插式的,我们在使用时可根据不同的业务场景可选择不同的引擎。 在mysql官网上对于自定义存储引擎也有所介绍。...编写自定义存储引擎 2.4、数据存储层 这个就是我们平常所说的物理存储啦,主要就是把数据存储到运行mysql的服务器中的文件系统中,并且能够完成和存储引擎的交互。
mysqldump工具备份: 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份...提供三种级别的备份,表级,库级和全库级 备份数据库 备份单个数据库 mysqldump --databases we -uroot -pAa123456 > /we/sjk.sql 备份多个数据库 mysqldump...-pAa123456 -d > /we/sjk.sql 数据库恢复 mysql -uroot -pAa123456 we < /we/sjk.sql 全库备份/恢复 备份 mysqldump -uroot...-pAa123456 --all-databases > /we/sjk.sql 恢复 mysql -uroot -pAa123456 < /we/sjk.sql 备份数据库表 备份we库的userc...--compact -t we userc > /we/sjkb.sql 恢复数据库表 mysql mysqldump -uroot -pAa123456 we < /we/sjkb.s`ql
一、逻辑结构简介 ?...Mysql服务器逻辑架构图,图来自《高性能MySQL》一书: ?...,然后这时候有两个用户在抢这个商品,按照逻辑,一个用户购物成功,库存就应该减1的,然后事务并发没控制好,这种情况是很容易出现商品没库存了,然后还可以下单的案例,这种是不合理的,这时候可以用数据库的锁机制来做...之前名称是称为InnoDB plugin,直到被oracle收购mysql后,才正式命名为InnoDB。...,原先是收购了NDB数据库,然后发展来的 自定义存储引擎 Mysql的存储引擎是支持可以自己开发和修改的,比如阿里的mysql就不是用默认InnoDB 图来自尚硅谷老师归纳: ?
数据库缓冲池(buffer pool) InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页 面(包括读页面、写页面、创建新页面等操作)。...需要说明的是,在MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。因为命中条件苛刻,而且只要数据表 发生变化,查询缓存就会失效,因此命中率低。...3.2 缓冲池如何读取数据 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面 是否在缓冲池中,如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进...缓存在数据库中的结构和作用如下图所示: 3.3 查看/设置缓冲池的大小 如果你使用的是 InnoDB 存储引擎,可以通过查看 innodb_buffer_pool_size 变量来查看缓冲池的大 小。...3.5 引申问题 Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子。
领取专属 10元无门槛券
手把手带您无忧上云