mysql
文章平均质量分 66
元气满满的热码式
云原生领域创作者,RHCE红帽认证工程师,目前大三在读,立志进大厂实习,感谢大家的关注,对我的认可!
展开
-
使用备份工具xtrabackup对数据库进行压缩备份并解压缩
使用 --decompress压缩的备份集在准备备份之前需要解压,解压工具是qpress。解压后的原文件不会被删除,可以使用--remove-original选项清除。解压缩需要有 qpress 命令,由于我建了yum库,可以直接通过yum安装 yum -y install qpress。--parallel可与--decompress选项一起使用以同时解压缩多个文件。--compress-threads=4 使用四个线程同时进行压缩。如果要加速压缩,可以使用--compress-threads选项。原创 2024-02-21 10:53:32 · 820 阅读 · 0 评论 -
使用备份工具xtrabackup进行差异备份详细讲解
基于第一天进行差异备份。原创 2024-02-21 10:15:23 · 468 阅读 · 0 评论 -
运维高级篇-分库分表(拆分策略详解)
随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存 储,存在以下性能瓶颈:IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽 不够,网络IO瓶颈。CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出 现瓶颈。分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能 问题,从而达到提升数据库性能的目的。原创 2024-02-08 16:54:23 · 562 阅读 · 0 评论 -
运维必会篇-主从复制
主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这 些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状 复制。MySQL 复制的优点主要包含以下三个方面:主库出现问题,可以快速切换到从库提供服务。实现读写分离,降低主库的访问压力。可以在从库中执行备份,以避免备份期间影响主库服务。原创 2024-02-07 14:22:35 · 1023 阅读 · 0 评论 -
运维必会篇-日志(错误日志,二进制日志,查询日志,慢查询日志)
错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过 程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日 志。该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log。原创 2024-02-06 17:36:21 · 1447 阅读 · 0 评论 -
MySQL管理的常用工具(mysqldump备份工具,mysqlimport/source导入工具)
mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,及 插入表的SQL语句。如果我们在数据备份时,不需要创建表,或者不需要备份数据,只需要备份表结构,都可以通过对应的 参数来实现。是客户端数据导入工具,用来导入mysqldump 加 -T 参数后导出的文本文件。B. 备份itcast数据库中的表数据,不备份表结构(-t)C. 将itcast数据库的表的表结构与数据分开备份(-T)如果需要导入sql文件,可以使用mysql中的。原创 2024-02-06 11:04:55 · 488 阅读 · 0 评论 -
MySQL管理的常用工具(mysql,mysqlbinlog,mysqladmin,mysqlshow)
由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使 用到mysqlbinlog 日志管理工具。-e选项可以在Mysql客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本, 这种方式尤其方便。mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并 删除数据库等。mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索 引。原创 2024-02-05 17:03:38 · 765 阅读 · 0 评论 -
MySQL进阶之锁(行锁,间隙锁,临键锁)
行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在 InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的 锁。对于行级锁,主要分为以下三类:行锁(Record Lock):锁定单个行记录的锁,防止其他事务对此行进行update和delete。在 RC、RR隔离级别下都支持。原创 2024-02-04 17:55:54 · 1215 阅读 · 0 评论 -
MySQL进阶之锁(表级锁,元数据锁,意向锁)
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、 InnoDB、BDB等存储引擎中。对于表级锁,主要分为以下三类:表锁元数据锁(meta data lock,MDL)意向锁。原创 2024-02-03 18:21:21 · 860 阅读 · 0 评论 -
MySQL进阶之锁(全局锁以及备份报错解决)
全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语 句,已经更新操作的事务提交语句都将被阻塞。其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整 性。先来分析一下不加全局锁,可能存在的问题。假设在数据库中存在这样三张表: tb_stock 库存表,tb_order 订单表,tb_orderlog 订单日 志表。在进行数据备份时,先备份了tb_stock库存表。原创 2024-02-02 21:32:16 · 1344 阅读 · 0 评论 -
MySQL进阶之触发器
触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触 发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还 只支持行级触发,不支持语句级触发。原创 2024-02-02 17:11:39 · 597 阅读 · 0 评论 -
MySQL进阶之游标,条件处理程序及存储函数
根据传入的参数uage,来查询用户表tb_user中,所有的用户年龄小于等于uage的用户姓名 (name)和专业(profession),并将用户的姓名和专业插入到所创建的一张新表 (id,name,profession)中。上述的存储过程,最终我们在调用的过程中,会报错,之所以报错是因为上面的while循环中,并没有 退出条件。READS SQL DATA:包含读取数据的语句,但不包含写入数据的语句。存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。NO SQL :不包含 SQL 语句。原创 2024-02-01 17:35:02 · 408 阅读 · 0 评论 -
MySQL进阶之循环控制(WHILE,REPEAT,LOOP)
LOOP 实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。(相当于continue)repeat是有条件的循环控制语句, 当满足until声明的条件的时候,则退出循环。while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。LEAVE :配合循环使用,退出循环。(相当于break)原创 2024-02-01 11:24:13 · 203 阅读 · 0 评论 -
MySQL进阶之条件控制(IF,CASE)
在if条件判断的结构中,ELSE IF 结构可以有多个,也可以没有。ELSE结构可以有,也可以没有。原创 2024-01-31 21:15:01 · 355 阅读 · 0 评论 -
MySQL进阶之存储过程(变量)
用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量 名" 使用就可以。其作用域为当前连接。赋值SELECT 字段名 INTO @var_name FROM 表名;使用#赋值set @mygender := '男', @mybody := 'java';#查询。原创 2024-01-31 16:25:46 · 608 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(视图)
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视 图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作 就落在创建这条SQL查询语句上。创建查询修改删除。原创 2024-01-30 21:26:16 · 544 阅读 · 0 评论 -
MySQL进阶之SQL优化(group by优化,limit优化,count优化,update优化)
当在进行分页查询时,如果执行 limit 2000000,10 ,此时需要MySQL排序前2000010 记 录,仅仅返回 2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加,最后返回累计值。当我们开启多个事务,在执行上述的SQL时,我们发现行锁升级为了表锁。在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。原创 2024-01-30 14:59:02 · 1314 阅读 · 0 评论 -
MySQL进阶之SQL优化(插入优化,主键优化,order by优化)
优化方案1:批量插入优化方案2:手动提交事务优化方案3:主键顺序插入,性能要高于乱序插入。如果一次性需要插入大批量数据(比如: 几百万的记录),使用insert语句插入性能较低,此时可以使 用MySQL数据库提供的load指令进行插入。原创 2024-01-30 11:38:36 · 351 阅读 · 0 评论 -
MySQL之索引设计原则
1). 针对于数据量较大,且查询比较频繁的表建立索引。2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索 引。3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间, 避免回表,提高查询效率。6). 要控制索引的数量,索引并不是多多益善,索引越原创 2024-01-29 15:37:07 · 171 阅读 · 0 评论 -
MySQL之索引使用原则详解(验证索引效率,SQL提示等)
在and连接的两个字段 phone、name上都是有单列索引的,但是 最终mysql只会选择一个索引,也就是说,只能走一个字段的索引,此时是会回表查询的。可以根据索引的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值, 索引选择性越高则查询效率越高, 唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。此时,查询时,就走了联合索引,而在联合索引中包含 phone、name的信息,在叶子节点下挂的是对 应的主键id,所以查询是无需回表查询的。如果是头部模糊匹配,索引失效。原创 2024-01-29 15:16:57 · 1013 阅读 · 0 评论 -
MySQL之索引分类,语法以及SQL性能分析(慢日志,profile,explain)
而B语句需要先查询name字段的二级索引,然 后再查询聚集索引,也就是需要进行回表查询。EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行 过程中表如何连接和连接的顺序。慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有 SQL语句的日志。如果表没有主键,或没有合适的唯一索引,则innodb会自动生成一个rowid作为隐藏的聚集索引。聚集索引的叶子节点下挂的是这一行的数据。原创 2024-01-28 17:41:10 · 1074 阅读 · 1 评论 -
学习MySQL仅此一篇就够了(DATAGRIP连接Linux以及索引结构详解)
介绍索引是帮助MySQL高效获取数据的数据结构。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优缺点优势劣势提高数据检索的效率,降低数据库的IO成本索引列也是要占用空间的通过索引列对数据进行排序,降序数据排序的成本,降低CPU的消耗索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行insert,update,delete时,效率降低。原创 2024-01-26 20:58:09 · 1449 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(存储引擎)
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是 基于库的,所以存储引擎也可被称为表类型。-- 查询建表语句-- 查询当前数据库支持的存储引擎-- 创建表 my_myisam,并指定myisam存储引擎id int,原创 2024-01-25 19:25:18 · 507 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(事务)
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的的操作作为一个整体,一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。原子性:事务是不可分割的最小操作单元,要么全部执行成功,要么全部执行失败。持久性:事务一旦提交或回滚,他对数据库中的数据的改变就是永久的。一致性:事务完成时,必须使所有的数据都保持一致状态。注意:事务隔离级别越高,数据越安全,但性能越低。查看/设置事务提交方式。原创 2024-01-25 17:25:24 · 402 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(多表查询)
关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表上,其他详细字段放在另一张表中,以提示效率。对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。子查询返回的结果是单个值,最简单的形式,这种子查询称为标量子查询。概念:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。子查询返回的结果是多行多列,这种子查询称为表子查询。子查询返回的结果是一列,这种子查询称为列子查询。子查询返回的结果是一行,这种子查询称为行子查询。实现:在多的一方建立外键,指向一的一方的主键。原创 2024-01-24 18:43:16 · 388 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(函数,约束)
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。函数指的是一段可以直接被另一段程序调用的程序或代码。目的:保证数据库中数据的正确,有效性和完整性。具有外键的表称为子表,外键所关联的称为父表。原创 2024-01-23 20:54:00 · 330 阅读 · 0 评论 -
学习MySQL仅此一篇就够了(SQL语句)
关系型数据库概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:1.使用表存储数据,格式统一,便于维护2.使用SQL语言操作,标准统一,使用方便数据模型数据库-->表。原创 2024-01-22 21:36:22 · 976 阅读 · 0 评论 -
超详细!在Linux中安装Mysql
方法2:Docker安装。原创 2024-01-17 19:26:11 · 366 阅读 · 0 评论 -
MYSQL数据库--DDL语句
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型() [COMMENT 注释];字段1 字段1类型[COMMENT 字段1注释],字段2 字段2类型[COMMENT 字段2注释],字段3 字段3类型[COMMENT 字段3注释],字段n 字段n类型[COMMENT 字段n注释]DROP TABLE [IF EXISTS] 表名;原创 2023-09-25 09:17:01 · 103 阅读 · 1 评论