- 博客(37)
- 收藏
- 关注
原创 12、MySQL锁相关知识
目录1、全局锁和表锁使用场景2、行锁的意义3、为什么说间隙锁解决了快照的幻读?4、RR隔离级别产生幻读的场景5、详解元数据锁(MDL)作用以及如何减少元数据锁6、出现死锁场景7、查看MySQL锁情况8、自增锁全局锁备份数据库:当需要对整个数据库进行一致性备份时,使用全局锁可以确保在备份过程中数据库的数据状态不会发生变化,从而保证备份数据的完整性和一致性。例如,在使用 工具备份数据库时,可以通过添加 参数来实现一致性备份,但对于一些不支持事务的存储引擎(如 MyISAM),或者需要确保绝对一致性的场景,就
2025-01-23 13:20:57
1086
原创 11、索引知识
例如,在一个包含大量订单记录的表中,“订单编号” 列的 Cardinality 很高,因为每个订单通常都有唯一的编号,为 “订单编号” 列建立索引可以使查询特定订单的操作非常高效。注意,添加索引也并非越多越好,索引会占用额外的存储空间,并且在数据插入、更新和删除时会增加维护索引的开销,所以需要根据实际的业务需求和查询场景,权衡利弊后决定是否添加索引以及添加哪些索引。:如果表中的数据量很少,全表扫描的成本很低,使用索引可能会增加额外的开销,因为索引本身也需要占用一定的存储空间和查询时的开销。
2025-01-22 10:43:58
1207
原创 10、内存和磁盘管理
更改缓冲区的存在可减少随机访问IO,因为二级索引数据的写入是以页为单位,多次操作可能位于同一页面,也就是将一个页面上的多次更改刷新到磁盘,转换成一次落盘,减少随机访问的IO。,可以将缓冲池划分为多个独立的实例,这样不同的线程或用户可以并发地访问不同的缓冲池实例,减少线程之间的争用。客户端请求经连接层处理后,进入服务层,经过 SQL 接口、解析器、优化器和缓存等组件,由存储引擎层执行存储和检索操作,最终将结果返回给客户端。:负责数据的物理存储,不同存储引擎使用不同文件存储方式,例如 InnoDB 使用。
2025-01-22 10:32:16
790
原创 09、PT工具用法
通过pt-archiver,帮忙写一个martin库的logtable表归档的shell脚本,这个实例的ip是192.168.152.70超过30天的数据归档到归档实例192.168.152.31中的archiver库logtable表中。创建一张与原始表结构相同的临时表然后对临时表进行表结构变更通过触发器实现增量数据处理将原始表中的数据复制到新表中把原始表重命名为_x_old,将临时表重命名为x删除_xxx_old表,删除3个触发器表结构变更完成。使用pt-osc添加唯一索引。
2025-01-17 17:04:10
844
原创 07、常用开发工具连接MySQL
用户名和密码在脚本前面定义,后面通过用户名密码的变量来连接MySQL。统计10秒前后MySQL8.0的查询次数(Queries的变化)以及这10秒产生的慢查询数量(Slow_queries的变化)echo "事务个数: $TRANSACTION_COUNT"echo "慢查询数量: $SLOW_QUERY_COUNT"echo "总查询次数: $QUERY_COUNT"print("数据插入成功")print("数据更新成功")print("数据删除成功")print("查询结果:")
2025-01-17 11:05:44
748
原创 08、如何预防SQL注入
SQL 注入是一种严重的安全威胁,可能导致数据泄露、篡改、删除、权限提升和拒绝服务攻击。为了防止 SQL 注入,必须使用参数化查询、输入验证、使用 ORM 框架等安全措施,确保应用程序的安全性。定期进行安全审计和代码审查,及时发现和修复潜在的 SQL 注入漏洞。
2025-01-17 11:04:00
1154
原创 05、必须掌握的备份和恢复技能
介绍mysqldump、mydumper、xtrabackup、clone plugin 的备份和恢复等详细介绍,以及具体使用细节
2025-01-09 15:15:33
1032
原创 03、MySQL安全管理和特性解析(DBA运维专用)
本节主要讲MySQL的安全管理、角色使用、在特定场景下的数据库对象的使用、各版本特性以及存储引擎介绍
2025-01-08 10:23:58
1731
原创 DBA-MYSQL运维题
26(判断)当一个线程申请进入临界区时,它就进入了“Entry Set”队列,但该临界区内的对象monitor被其他线程拥有,本线程在Entry set队列中等待,线程CUMP会显示处于“wariting for monitor entry”12.(单选)文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是。13.(单选)下列查看文件的命令中,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令(C)
2025-01-07 16:54:57
830
原创 01、Linux常用命令和shell脚本(非常有好一看就懂)
快速掌握DBA必备基础知识:Linux的使用,Shell基础,以及借助ai工具ChatGPT编写shell脚本,非常有好,有利于初学者入门!
2025-01-06 16:06:03
984
原创 MySQL版本特性和存储引擎选择
InnoDB是MySQL中最常用的存储引擎之一,因为它提供了强大的事务支持、高并发处理能力和良好的崩溃恢复机制。它被设计用于处理大量的短期和长期事务,并且能够很好地支持外键约束和复杂的查询操作。相比之下,MVSAM存储引擎已经很少使用,它在MySQL 5.7版本后已被废弃。MVSAM在某些特定场景下可能仍有其用途,但它的功能和性能限制使其不适合大多数现代数据库应用的需求。
2024-04-03 22:29:08
2196
原创 DBA工作经验总结
如果innodb没有显示定义主键,可能会选择唯一索引作为主键,唯一索引在写入的过程可能不是递增的,写入数据时可能会导致数据页频繁分裂,从而导致写入效率低和页空间浪费。另外主键能保证每一行的唯一性,在日常使用也会很方便,提升查询效率、归档处理。
2024-03-24 15:16:01
3378
原创 MySQL面试题--开发(最全,涵盖SQL基础、架构、事务)
垂直分库一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:系统被切分成了,用户,订单交易,支付几个模块。水平分表把一张表里的内容按照不同的规则 写到不同的库里相对于垂直拆分,水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。视图定义: 1、视图是一个虚表,是从一个或几个基本表(或视图)导出的表。2、只存放视图的定义,不存放视图对应的数据。
2024-03-23 09:35:35
1065
1
原创 MySQL面试题--事务
事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)事务都有ACID特性1 、原子性atomicity过程的保证只做一个步骤1 给钱2 去买3 交回来事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性结果的保证保证要吃完刚张嘴挂了,失去一致性事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
2024-03-22 17:36:40
890
1
原创 MySQL面试题--MySQL内部技术架构
MySQL内部维持着一些Cache和Buffer,比如Query Cache用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、查询优化和执行的整个过程了,直接将结果反馈给客户端。所以还会有个线程池,去走后面的流程。不同的存储引擎具有的功能不同,管理的表有不同的存储结构,采用的存取算法也不同,这样我们可以根据自己的实际需要进行选取。下面的结果表示MySQL中默认使用的存储引擎是InnoDB,支持事务,行锁,外键,支持分布式事务(XA),支持保存点(回滚)
2024-03-22 17:14:16
1994
1
原创 MySQL面试题--最全面-索引
自适应哈希索引是Innodb引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree所有之上再创建一个哈希索引,这就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希查找。这是一个完全自动的内部行为,用户无法控制或配置。使用命令:查看INSERT BUFFER AND ADAPTIVE HASH INDEX;多叉树(multiway tree)允许每个节点可以有更多的数据项和更多的子节点。2-3树,2-3-4树就是多叉树,多叉树通过。
2024-03-21 10:39:46
3123
1
原创 MySQL--事务
事务隔离级别定义了不同事务之间的隔离程度,即一个事务对数据库中的数据所做的修改对其他事务的可见性。每个事务都可以在自己的“时间点”读取数据,不会受到其他事务的影响,从而提高了数据库的并发性能和事务的可靠性。(Isolation):多个事务并发执行时,各个事务之间是相互隔离的,一个事务的执行不会影响其他事务的执行。Undo日志:MySQL使用Undo日志来保存数据的旧版本,当事务更新数据时,会将旧版本的数据保存到Undo日志中,以便其他事务可以读取到旧版本的数据。
2024-03-17 08:39:38
890
1
原创 MySQL--锁
在使用行级锁时,应该尽量减少锁定的时间,避免对大范围的数据进行锁定,以提高系统的并发性能和稳定性。在这种情况下,用户A的DDL操作会获取到元数据锁,阻止了用户B的查询操作,直到用户A的DDL操作完成并释放元数据锁后,用户B的查询操作才能继续执行。在执行查询操作时,MySQL会尝试获取元数据锁,以确保在进行查询操作时,其他事务不会对表进行结构更改,保证查询的一致性。通过以上命令,可以查看MySQL中的锁信息,包括当前的锁情况、会话的锁情况、锁等待情况以及更详细的锁信息。
2024-03-16 21:32:59
1092
1
原创 MySQL--索引
索引可以帮助数据库快速定位到需要的数据,减少数据的读取量和磁盘I/O的次数,加速数据的排序和分组操作,从而提高了查询的效率。因此,在数据库设计和查询优化中,合理使用索引是提高效率的重要手段之一。降低磁盘I/O的次数:索引可以减少磁盘I/O的次数,因为数据库可以直接通过索引定位到需要的数据行,而不需要每次都进行全表扫描,从而减少了磁盘I/O的开销,提高了查询的效率。减少数据读取量:通过使用索引,数据库可以直接定位到需要的数据行,而不需要读取整个表的数据,减少了数据的读取量,提高了查询的效率。
2024-03-16 14:32:03
1221
1
原创 MySQL--mydumper备份和恢复原理
目录1.备份原理:2.恢复原理:3.备份过程:4.恢复过程:mydumper作为一个实用工具,能够良好支持多线程工作。在主线程中,它首先会对备份实例加读锁,通过FLUSH TABLES WITH READ LOCK命令来阻塞写操作,从而建立一致性数据备份快照。然后,它会读取当前时间点的二进制日志文件名和日志写入的位置,并将这些信息记录在metadata文件中,以供即时点恢复使用。接下来,mydumper会创建工作线程,初始化备份任务队列,并向队列中推送数据库元数据(schema)、非InnoDB表和Inno
2024-03-09 10:22:58
607
原创 MySQL--mydumper
mydumper的备份原理是通过多线程并行读取MySQL的数据文件,将数据导出为多个文件,然后通过文本文件来记录数据库结构和数据。这条命令会备份指定的MySQL数据库到指定的路径。这条命令会将备份文件恢复到MySQL数据库中。
2024-03-07 15:05:40
493
1
原创 MySQL--mysqldump逻辑备份工具原理详解
逻辑备份工具mysqldump是通过将数据库中的数据和结构以SQL语句的形式导出到文件中,实现数据库备份和恢复的工具。以下是mysqldump。
2024-03-05 15:27:43
901
1
原创 MySQL--中继日志(Relay Log)
中继日志(Relay Log)是MySQL复制过程中的一个关键组成部分,主要用于主从复制架构中。在这种架构下,数据从一个MySQL服务器(主服务器)复制到一个或多个MySQL服务器(从服务器)。中继日志在从服务器上扮演着重要角色,下面详细解释其工作原理、作用和管理方法。
2024-03-03 21:12:32
1365
原创 MySQL--错误日志(ErrorLog)
错误日志(Error Log)是定位和解决数据库问题的关键资源。记录了MySQL服务器启动、运行或停止时遇到的问题,包括任何严重错误、启动失败、连接问题等。
2024-03-03 21:08:40
992
原创 MySQL--慢查询日志开启及使用
MySQL的慢查询日志(Slow Query Log)是一种特殊的日志,用于记录执行时间超过指定阈值的查询。这对于识别和优化数据库中的低效查询非常有用。
2024-03-03 21:04:55
728
原创 MySQL--查询日志Genenal Log 及其作用
MySQL的查询日志(General Log)是MySQL提供的一种日志类型,用于记录发往MySQL服务器的所有客户端请求,包括每个连接和断开连接的操作、执行的SQL语句等。这使得查询日志成为了理解和分析数据库上发生的活动的重要工具。
2024-03-03 11:16:19
515
原创 MySQL二进制日志(bin_log)的作用和使用方法
MySQL的二进制日志(binary log,简称binlog)是MySQL数据库中的一个重要特性,它记录了所有对数据库执行更改的SQL语句(如INSERT、UPDATE、DELETE等),以及每个语句执行的确切时间。二进制日志是MySQL数据复制、数据恢复和审计分析的基础。
2024-03-03 10:57:24
4407
原创 DBA必备存储引擎篇、MySQL\MariaDB
总之,CSV存储引擎适用于一些简单的数据存储和处理场景,特别是对于小规模的数据、数据分析和交换需求较多的应用。InnoDB适用于大部分的应用场景,尤其是需要事务支持的应用。除了这些常用的存储引擎,MySQL还支持其他一些存储引擎,如CSV、BLACKHOLE、FEDERATED等,每个存储引擎都有自己的特点和适用场景。综上所述,由于InnoDB存储引擎在事务支持、并发性能、崩溃恢复和数据一致性等方面的优势,越来越多的用户选择使用InnoDB存储引擎来满足他们的需求,而MyISAM存储引擎则逐渐被取代。
2024-03-02 22:02:08
1084
原创 假如你是DBA,一个新的业务研发考虑使用5.6,请你说服他们使用MySQL8.0版本
总结起来,MySQL 8.0相对于MySQL 5.6来说提供了更好的性能、安全性、可扩展性和灵活性。性能改进:MySQL 8.0引入了许多性能优化,包括更好的查询优化器、索引和缓存策略。语法改进:MySQL 8.0引入了一些新的SQL语法和函数,使得查询编写更加简洁和高效。复制和高可用性:MySQL 8.0对复制机制进行了改进,包括增强的并行复制和多主复制功能。兼容性支持:MySQL 8.0兼容MySQL 5.6,并提供了一些兼容性工具和指南,使得迁移到新版本更加容易和顺利。
2024-03-02 21:07:53
448
原创 MySQL加列三种算法是什么?区别是什么?
创建新的表:根据原表的结构,使用CREATE TABLE语句创建一个新的表,包括原有的列和要添加的新列。(REBUILD):该算法会先创建一个空的新表,然后将原表中的所有数据按照指定的顺序重建到新表中,并在新表中添加新的列。可以根据需要自定义新列的属性。需要注意的是,拷贝表算法会创建一个完全相同的新表,并且需要复制原始表的所有数据,因此如果原始表包含大量数据,执行时间可能很长。其中,表名是要修改的表的名称,列名是要添加的列的名称,数据类型是添加的列的数据类型,列约束是可选的,用于定义列的限制条件。
2024-03-02 21:06:55
1096
原创 说一下MySQL 5.5、5.6、5.7、8.0个版本的特性?
支持全文索引和全文搜索的改进,提供了更高效的全文搜索算法和更多的全文搜索功能。支持更快的查询性能,引入了更高效的查询执行引擎和更快的索引操作。支持更高级的安全特性,包括新的默认加密算法和更强的密码安全策略。支持更大的存储容量,提供了更大的页大小和更高的存储限制。支持更高级的查询优化器,提供了更好的查询性能和执行计划。支持更快的查询优化器,提供了更好的查询优化和执行计划。支持更高级的分析查询,引入了窗口函数和共享表表达式。支持更高级的数据复制,引入了多源复制和并行复制。
2024-03-02 21:01:44
864
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人