- 博客(22)
- 收藏
- 关注
原创 MySQL版本特性和存储引擎选择
InnoDB是MySQL中最常用的存储引擎之一,因为它提供了强大的事务支持、高并发处理能力和良好的崩溃恢复机制。它被设计用于处理大量的短期和长期事务,并且能够很好地支持外键约束和复杂的查询操作。相比之下,MVSAM存储引擎已经很少使用,它在MySQL 5.7版本后已被废弃。MVSAM在某些特定场景下可能仍有其用途,但它的功能和性能限制使其不适合大多数现代数据库应用的需求。
2024-04-03 22:29:08 1867
原创 DBA工作经验总结
如果innodb没有显示定义主键,可能会选择唯一索引作为主键,唯一索引在写入的过程可能不是递增的,写入数据时可能会导致数据页频繁分裂,从而导致写入效率低和页空间浪费。另外主键能保证每一行的唯一性,在日常使用也会很方便,提升查询效率、归档处理。
2024-03-24 15:16:01 3190
原创 MySQL面试题--开发(最全,涵盖SQL基础、架构、事务)
垂直分库一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:系统被切分成了,用户,订单交易,支付几个模块。水平分表把一张表里的内容按照不同的规则 写到不同的库里相对于垂直拆分,水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。视图定义: 1、视图是一个虚表,是从一个或几个基本表(或视图)导出的表。2、只存放视图的定义,不存放视图对应的数据。
2024-03-23 09:35:35 1014 1
原创 MySQL面试题--事务
事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)事务都有ACID特性1 、原子性atomicity过程的保证只做一个步骤1 给钱2 去买3 交回来事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性结果的保证保证要吃完刚张嘴挂了,失去一致性事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
2024-03-22 17:36:40 796 1
原创 MySQL面试题--MySQL内部技术架构
MySQL内部维持着一些Cache和Buffer,比如Query Cache用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、查询优化和执行的整个过程了,直接将结果反馈给客户端。所以还会有个线程池,去走后面的流程。不同的存储引擎具有的功能不同,管理的表有不同的存储结构,采用的存取算法也不同,这样我们可以根据自己的实际需要进行选取。下面的结果表示MySQL中默认使用的存储引擎是InnoDB,支持事务,行锁,外键,支持分布式事务(XA),支持保存点(回滚)
2024-03-22 17:14:16 1943 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 2191 1
原创 MySQL--事务
事务隔离级别定义了不同事务之间的隔离程度,即一个事务对数据库中的数据所做的修改对其他事务的可见性。每个事务都可以在自己的“时间点”读取数据,不会受到其他事务的影响,从而提高了数据库的并发性能和事务的可靠性。(Isolation):多个事务并发执行时,各个事务之间是相互隔离的,一个事务的执行不会影响其他事务的执行。Undo日志:MySQL使用Undo日志来保存数据的旧版本,当事务更新数据时,会将旧版本的数据保存到Undo日志中,以便其他事务可以读取到旧版本的数据。
2024-03-17 08:39:38 859 1
原创 MySQL--锁
在使用行级锁时,应该尽量减少锁定的时间,避免对大范围的数据进行锁定,以提高系统的并发性能和稳定性。在这种情况下,用户A的DDL操作会获取到元数据锁,阻止了用户B的查询操作,直到用户A的DDL操作完成并释放元数据锁后,用户B的查询操作才能继续执行。在执行查询操作时,MySQL会尝试获取元数据锁,以确保在进行查询操作时,其他事务不会对表进行结构更改,保证查询的一致性。通过以上命令,可以查看MySQL中的锁信息,包括当前的锁情况、会话的锁情况、锁等待情况以及更详细的锁信息。
2024-03-16 21:32:59 1028 1
原创 MySQL--索引
索引可以帮助数据库快速定位到需要的数据,减少数据的读取量和磁盘I/O的次数,加速数据的排序和分组操作,从而提高了查询的效率。因此,在数据库设计和查询优化中,合理使用索引是提高效率的重要手段之一。降低磁盘I/O的次数:索引可以减少磁盘I/O的次数,因为数据库可以直接通过索引定位到需要的数据行,而不需要每次都进行全表扫描,从而减少了磁盘I/O的开销,提高了查询的效率。减少数据读取量:通过使用索引,数据库可以直接定位到需要的数据行,而不需要读取整个表的数据,减少了数据的读取量,提高了查询的效率。
2024-03-16 14:32:03 1204 1
原创 MySQL--mydumper备份和恢复原理
目录1.备份原理:2.恢复原理:3.备份过程:4.恢复过程:mydumper作为一个实用工具,能够良好支持多线程工作。在主线程中,它首先会对备份实例加读锁,通过FLUSH TABLES WITH READ LOCK命令来阻塞写操作,从而建立一致性数据备份快照。然后,它会读取当前时间点的二进制日志文件名和日志写入的位置,并将这些信息记录在metadata文件中,以供即时点恢复使用。接下来,mydumper会创建工作线程,初始化备份任务队列,并向队列中推送数据库元数据(schema)、非InnoDB表和Inno
2024-03-09 10:22:58 512
原创 MySQL--mydumper
mydumper的备份原理是通过多线程并行读取MySQL的数据文件,将数据导出为多个文件,然后通过文本文件来记录数据库结构和数据。这条命令会备份指定的MySQL数据库到指定的路径。这条命令会将备份文件恢复到MySQL数据库中。
2024-03-07 15:05:40 438 1
原创 MySQL--mysqldump逻辑备份工具原理详解
逻辑备份工具mysqldump是通过将数据库中的数据和结构以SQL语句的形式导出到文件中,实现数据库备份和恢复的工具。以下是mysqldump。
2024-03-05 15:27:43 812 1
原创 MySQL--中继日志(Relay Log)
中继日志(Relay Log)是MySQL复制过程中的一个关键组成部分,主要用于主从复制架构中。在这种架构下,数据从一个MySQL服务器(主服务器)复制到一个或多个MySQL服务器(从服务器)。中继日志在从服务器上扮演着重要角色,下面详细解释其工作原理、作用和管理方法。
2024-03-03 21:12:32 1117
原创 MySQL--错误日志(ErrorLog)
错误日志(Error Log)是定位和解决数据库问题的关键资源。记录了MySQL服务器启动、运行或停止时遇到的问题,包括任何严重错误、启动失败、连接问题等。
2024-03-03 21:08:40 788
原创 MySQL--慢查询日志开启及使用
MySQL的慢查询日志(Slow Query Log)是一种特殊的日志,用于记录执行时间超过指定阈值的查询。这对于识别和优化数据库中的低效查询非常有用。
2024-03-03 21:04:55 658
原创 MySQL--查询日志Genenal Log 及其作用
MySQL的查询日志(General Log)是MySQL提供的一种日志类型,用于记录发往MySQL服务器的所有客户端请求,包括每个连接和断开连接的操作、执行的SQL语句等。这使得查询日志成为了理解和分析数据库上发生的活动的重要工具。
2024-03-03 11:16:19 436
原创 MySQL二进制日志(bin_log)的作用和使用方法
MySQL的二进制日志(binary log,简称binlog)是MySQL数据库中的一个重要特性,它记录了所有对数据库执行更改的SQL语句(如INSERT、UPDATE、DELETE等),以及每个语句执行的确切时间。二进制日志是MySQL数据复制、数据恢复和审计分析的基础。
2024-03-03 10:57:24 3820
原创 DBA必备存储引擎篇、MySQL\MariaDB
总之,CSV存储引擎适用于一些简单的数据存储和处理场景,特别是对于小规模的数据、数据分析和交换需求较多的应用。InnoDB适用于大部分的应用场景,尤其是需要事务支持的应用。除了这些常用的存储引擎,MySQL还支持其他一些存储引擎,如CSV、BLACKHOLE、FEDERATED等,每个存储引擎都有自己的特点和适用场景。综上所述,由于InnoDB存储引擎在事务支持、并发性能、崩溃恢复和数据一致性等方面的优势,越来越多的用户选择使用InnoDB存储引擎来满足他们的需求,而MyISAM存储引擎则逐渐被取代。
2024-03-02 22:02:08 1019
原创 假如你是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 412
原创 MySQL加列三种算法是什么?区别是什么?
创建新的表:根据原表的结构,使用CREATE TABLE语句创建一个新的表,包括原有的列和要添加的新列。(REBUILD):该算法会先创建一个空的新表,然后将原表中的所有数据按照指定的顺序重建到新表中,并在新表中添加新的列。可以根据需要自定义新列的属性。需要注意的是,拷贝表算法会创建一个完全相同的新表,并且需要复制原始表的所有数据,因此如果原始表包含大量数据,执行时间可能很长。其中,表名是要修改的表的名称,列名是要添加的列的名称,数据类型是添加的列的数据类型,列约束是可选的,用于定义列的限制条件。
2024-03-02 21:06:55 1017
原创 说一下MySQL 5.5、5.6、5.7、8.0个版本的特性?
支持全文索引和全文搜索的改进,提供了更高效的全文搜索算法和更多的全文搜索功能。支持更快的查询性能,引入了更高效的查询执行引擎和更快的索引操作。支持更高级的安全特性,包括新的默认加密算法和更强的密码安全策略。支持更大的存储容量,提供了更大的页大小和更高的存储限制。支持更高级的查询优化器,提供了更好的查询性能和执行计划。支持更快的查询优化器,提供了更好的查询优化和执行计划。支持更高级的分析查询,引入了窗口函数和共享表表达式。支持更高级的数据复制,引入了多源复制和并行复制。
2024-03-02 21:01:44 752
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人