![](https://img-blog.csdnimg.cn/20190911143037485.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 90
章全蛋
这个作者很懒,什么都没留下…
展开
-
MySQL集群架构 —— 集群架构设计
MySQL集群架构 —— 集群架构设计集群架构设计架构设计理念在集群架构设计时,主要遵从下面三个维度:可用性站点高可用,冗余站点服务高可用,冗余服务数据高可用,冗余数据**保证高可用的方法是冗余。**但是数据冗余带来的问题是数据一致性的问题。实现高可用的方案有以下几种架构模式:主从模式灵活简单,能满足多种需求。比较主流的用法,但是写操作高可用需要自行处理。双主模式互为主从,有双主双写、双主单写两种方式。建议使用双主单写。扩展性扩展性主要围绕着读操作扩展和原创 2021-03-02 10:57:58 · 433 阅读 · 0 评论 -
MySQL 锁机制
MySQL 锁机制锁分类在 MySQL 中,锁有很多不同的分类从操作的粒度可分为表级锁、行级锁和页级锁表级锁:每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:每次操作只锁住一行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。页级锁:每次锁定相邻的一组记录,锁定粒度界于表锁和行锁之间,开销和加锁时间界于表锁和行锁之间,并发度一般。应用在BDB 存储引擎中。行锁表锁页锁MyISAM✔️BDB✔️✔️原创 2021-02-26 15:30:18 · 104 阅读 · 0 评论 -
MySQL事务
MySQL事务ACID 特性在关系型数据库管理系统中,一个逻辑工作单元要成为事务,必须满足这 4 个特性,即所谓的 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性原子性指的是:事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行数据修改 => Buffer Pool => 刷盘。可能会有下面两种情况:事务提交了,如果此时 Buffer Pool 的脏页没有刷盘,如何原创 2021-02-25 15:38:26 · 129 阅读 · 0 评论 -
MySQL 索引分析与优化
MySQL 索引分析与优化EXPLAINMySQL 提供了一个 EXPLAIN 命令,它可以对 SELECT 语句进行分析,并输出 SELECT 执行的详细信息,供开发人员有针对性的优化。例如;explain select * from t_user where id < 3;输出如下:mysql> explain select * from t_user where user_id < 3 \G*************************** 1. row *****原创 2021-02-23 17:36:09 · 123 阅读 · 0 评论 -
MySQL 索引原理
MySQL 索引原理索引可以提升查询速度,会影响 where 查询,以及 order by 排序等。索引类型MySQL 索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT 全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和所有键值逻辑关系划分:聚簇索引(聚集索引)、非聚簇索引(非聚集索引)普通索引这是最基本的索引类型,基于普通字段建立的索引原创 2021-02-22 20:23:06 · 263 阅读 · 0 评论 -
MySQL 日志
MySQL 日志Undo LogUndo Log 介绍undo:意为撤销或取消,以撤销操作为目的,返回指定某个状态的操作。Undo Log:数据库事务开始之前,会将要修改的记录存放到 Undo 日志里,当事务回滚时或者数据库崩溃时,可以利用 Undo Log,撤销未提交事务对数据库产生的影响。Undo Log 的生命周期:Undo Log 在事务开始前产生;事务在提交时,并不会立刻删除 undo log,InnoDB 会将该事务对应的 undo log 放入删除列表中,后面会通过后台线程 pur原创 2021-02-08 15:23:08 · 255 阅读 · 0 评论 -
InnoDB 线程模型
InnoDB 线程模型IO Thread在 InnoDB 中使用了大量的 AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能。在 InnoDB 1.0 版本之前共有 4 个 IO Thread,分别是 write、read、insert buffer 和 log thread,后来版本将 read thread 和 write thread 分别增大到了4个,一共有10个了。read thread:负责读取操作将数据从磁盘加载到缓存 page 页(4个线程)write原创 2021-02-03 16:25:10 · 171 阅读 · 0 评论 -
InnoDB 存储结构
文章目录InnoDB 存储结构InnoDB 内存结构Buffer PoolPage 管理机制改进版的 LRU 算法维护Buffer Pool 配置参数Change BufferAdaptive Hash IndexLog BufferInnoDB 磁盘结构表空间(Tablespaces)系统表空间(The System Tablespaces)独立表空间(File-Per-Table Tablespaces)通用表空间(General Tablespaces)撤销表空间(Undo Tablespaces)临原创 2021-02-03 10:38:05 · 505 阅读 · 0 评论 -
MySQL 存储引擎简介
MySQL 存储引擎简介存储引擎在 MySQL 的体系架构中位于第三层,负责 MySQL 中的数据的存储和提取,是与文件打交道的子系统,它是根据 MySQL 提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫做存储引擎。使用 show engines 命令,就可以查看当前数据库支持的引擎信息:在 5.5 版本之前 MySQL 默认采用 MyISAM 存储引擎,从 5.5 开始采用 InnoDB 存储引擎。InnoDB:支持事务,具有提交、回滚和崩溃恢复能力,事务安全MyISAM:不支原创 2021-01-27 19:36:42 · 72 阅读 · 0 评论 -
MySQL 运行机制
MySQL 运行机制建立连接建立连接(Connectors&Connection Pool),通过客户端/服务器通信协议与 MySQL 建立连接。MySQL 客户端与服务端的通信方式是“半双工”。对于每一个 MySQL 的连接,都有一个线程状态来表示这个连接正在做什么。通信机制:全双工:能同时发送和接收数据,例如平时打电话。半双工:指的某一时刻,要么发送数据,要么接收数据,不能同时。例如早期对讲机。单工:只能发送数据或只能接收数据。例如单行道。线程状态:show proce原创 2021-01-26 19:56:52 · 261 阅读 · 2 评论 -
MySQL 体系架构
MySQL 体系架构MySQL Server 架构自顶向下大致可以分为 网络连接层、服务层、存储引擎层和系统文件层。网络连接层客户端连接器(Client Connectors):提供与 MySQL 服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET 等,它们通过各自的 API 与MySQL 建立连接。服务层(MySQL Server)服务层是 MySQL Server 的核心,主要包括系统管理和控制工具、连接池、SQL接口,解析器、查询优原创 2021-01-26 14:21:12 · 135 阅读 · 0 评论 -
MySQL为已存在数据的表新增自增id字段
ALTER TABLE table_name ADD COLUMN id int(11) NOT NULL AUTO_INCREMENT first,ADD primary KEY(id);执行完后,会在原有的表的第一列添加自增主键,以1开始原创 2020-07-10 17:17:29 · 2573 阅读 · 0 评论 -
MySQL导出指定表前缀的表
mysqldump -uroot -p 库名 $(mysql -uroot -p 库名 -Bse "show tables like 't_%'") > "导出位置.sql"原创 2020-03-04 15:22:20 · 1832 阅读 · 0 评论 -
MySQL主从配置
MySQL主从复制原理主服务器数据库的每次操作都会记录在其二进制文件mysql-bin.xxx(该文件可以在mysql目录下的data目录中看到)中,从服务器的I/O线程使用专用账号登录到主服务器中读取该二进制文件,并将文件内容写入到自己本地的中继日志relay-log文件中,然后从服务器的SQL线程会根据中继日志中的内容执行SQL语句MySQL主从同步的作用1、可以作为备份机制,相当...原创 2019-09-19 11:41:17 · 100 阅读 · 0 评论 -
Mysql复合索引选取规则问题
先创建测试数据表CREATE TABLE `test`.`composite_index_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `phone` bigint(15) NOT NULL, `sex` enum('0','1') NULL, `age` tinyint...原创 2019-07-24 12:15:21 · 2382 阅读 · 0 评论 -
MySQL 水平分区
分区概念分区是把表分成几个小部分,即对表的行进行划分。分区的优点可以提高数据库的性能;对大表(行较多)的维护更快、更容易,因为数据分布在不同的逻辑文件上;删除分区或它的数据是容易的,因为它不影响其他表。分区类型分区具有如下4种类型:Range分区:是对一个连续性的行值,按范围进行分区;比如:id小于100;id大于100小于200;日期在201906到201907之间;Li...原创 2019-06-26 16:12:16 · 892 阅读 · 0 评论 -
MySQL 使用LOAD DATA INFILE 快速导入文件
load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上你必须有file的权限。SQL语句基本语法load data [low_priority]...原创 2019-06-26 11:05:30 · 1784 阅读 · 0 评论