冷风扇666
稳扎稳打 脚踏实地
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL 流程控制函数详解
MySQL提供了几个流程控制函数,用于在查询过程中进行条件判断、空值处理和搜索操作。本文将深入探讨MySQL中的三个流程控制函数,包括它们的功能、语法和示例用法。解释:根据学生的成绩范围返回相应的等级,如果没有符合条件的范围,则返回"不及格"。解释:如果学生的成绩大于等于60,则返回"及格",否则返回"不及格"。解释:如果员工姓名为空,则返回"未知",否则返回员工姓名。作用:根据条件进行搜索并返回相应的结果。作用:判断是否为空,并提供替代值。作用:判断条件并执行相应的操作。原创 2024-02-12 02:30:00 · 676 阅读 · 0 评论 -
MySQL 聚合函数解析与示例
解释:这将返回"employees"表中工资最高的员工姓名,使用逗号和空格分隔。解释:这将返回"sales"表中"sales_amount"列的总和。作用:将查询结果中的多个行连接成一个字符串,并使用指定的分隔符分隔。解释:这将返回"employees"表中"salary"列的最大值。解释:这将返回"employees"表中"salary"列的最小值。解释:这将返回"customers"表中"age"列的平均值。解释:这将返回"orders"表中的行数。作用:求平均值,返回指定列数据的平均值。原创 2024-02-13 05:15:00 · 592 阅读 · 4 评论 -
MySQL 日期和时间函数全面指南
在数据库管理中,有效处理日期和时间对于各种操作至关重要,从简单的数据检索到复杂的分析。MySQL提供了丰富的内置函数来高效地操作日期和时间值。在本指南中,我们将探讨MySQL的基本日期和时间函数的用法和功能,探讨它们的语法和实际示例。原创 2024-02-07 21:09:02 · 645 阅读 · 2 评论 -
探索 MySQL 字符串函数
在 MySQL 中,字符串操作是非常常见的任务之一。MySQL 提供了一系列强大的字符串函数,用于处理和操作字符串数据。本文将介绍一些常用的 MySQL 字符串函数,并提供示例以说明它们的用法。原创 2024-02-12 02:15:00 · 510 阅读 · 0 评论 -
深入了解 MySQL 数值型函数
在 MySQL 数据库中,数值型函数是处理和操作数值类型数据的重要工具。这些函数涵盖了多种数学运算和常用的数值处理需求。本文将深入介绍一些常用的 MySQL 数值型函数,并通过具体案例演示它们的使用。现在,让我们逐个通过 SQL 查询展示其效果。为了方便演示,我们首先创建一个名为。该表包含一个自增主键。,一个双精度浮点数字段。原创 2024-02-11 05:00:00 · 520 阅读 · 1 评论 -
MySQL - 当前读和快照读、`UPDATE`、`INSERT`、`DELETE`加锁了?
操作,通常会引入锁定机制,以确保数据的一致性和避免并发冲突。这些操作会涉及对数据的修改,因此需要考虑并发事务可能同时访问和修改相同数据的情况。需要注意的是,锁定的行为还受到事务隔离级别的影响。不同的隔离级别会导致不同的锁定行为,例如,在Read Committed隔离级别下,然而,具体的锁定行为会受到隔离级别和数据库管理系统的实现方式的影响。操作可能会读取已提交的数据而不会等待锁,但在Serializable隔离级别下,会引入更多的锁定以确保数据的一致性。原创 2023-11-06 02:15:00 · 602 阅读 · 2 评论 -
InnoDB 事务是如何通过日志来实现的?一个简单的update?
现在,如果数据库崩溃或需要回滚事务,InnoDB可以使用Redo Log来重做修改,确保lfsun1的年龄被正确更新。如果需要回滚事务,Undo Log中的逻辑修改记录将用于将数据恢复到更新前的状态。语句时,InnoDB事务是如何通过日志来实现的呢?这些机制使InnoDB事务能够实现ACID特性,确保数据库的数据一致性和可靠性。原创 2023-11-05 14:32:07 · 258 阅读 · 2 评论 -
Spring Boot - 结合 Redis 使用 Lua脚本
现在,启动Spring Boot应用程序。使用浏览器或API调用来触发执行Lua脚本的操作,例如访问。debug_key、debug_incrementBy为debug调试用的,实际使用中删除。首先,在Spring Boot项目的。我们的money就会蹭蹭蹭的往上涨。原创 2023-10-30 21:00:00 · 1534 阅读 · 0 评论 -
MySQL - InnoDB 的事务支持、锁机制
InnoDB 的事务和锁的原理非常复杂,因为它需要满足 ACID 属性并处理高并发的数据库访问。事务和锁的设计是 InnoDB 引擎的核心部分,它确保了数据的完整性和并发性能。原创 2023-10-31 12:35:00 · 276 阅读 · 2 评论 -
MySQL - 为什么 Redo log 具有 crash-safe 的能力,是 Binlog 无法替代的?
总的来说,Redo log 提供了更强的数据恢复和事务一致性保障,使其具有 crash-safe 能力,而 Binlog 主要用于数据复制和备份,不具备 Redo log 的强一致性保障。这两种日志在数据库系统中扮演不同的角色,且无法互相替代。“Crash-safe”(安全崩溃)是指数据库系统或其他软件系统在发生崩溃或故障时,能够保持数据的完整性和一致性。原创 2023-11-06 01:00:00 · 415 阅读 · 0 评论 -
MySQL - 慢查询
慢查询日志是 MySQL 数据库管理和性能优化的有用工具,它可以帮助识别性能瓶颈并提供改进建议。但需要小心配置,以避免对生产环境的性能产生不必要的影响。慢查询日志用于记录执行时间超过设定的时间阈值的 SQL 查询语句。原创 2023-10-30 12:58:32 · 198 阅读 · 1 评论 -
MySQL - 自适应Hash索引
自适应哈希索引是 InnoDB 存储引擎的一项有趣的特性,它可以在特定情况下显著提高查询性能。在使用时,通常无需手动干预,因为它会自动适应查询模式。但需要注意,自适应哈希索引并不适用于所有类型的查询,所以在特定情况下需要评估其对性能的影响。原创 2023-10-30 12:52:47 · 266 阅读 · 0 评论 -
MySQL - Buffer Pool
总之,Buffer Pool是MySQL中用于缓存数据页的内存区域,主要与InnoDB存储引擎相关。通过缓存常用的数据页,Buffer Pool可以显著提高数据库的读取性能,降低对磁盘的I/O操作,从而加速查询和提供更好的响应时间。原创 2023-10-30 12:49:42 · 240 阅读 · 0 评论 -
InnoDB - 双写机制
双写机制的核心思想是,将写操作先写入一个临时缓冲区,然后再写入实际的数据文件。这个临时缓冲区通常是固定大小的内存缓冲区,称为双写缓冲。这个机制的主要目的是避免数据文件在写入时出现损坏或数据丢失的情况。总之,InnoDB 的双写机制通过使用双写缓冲区来提高数据持久性,确保即使在突发情况下,数据库也能够恢复到一致的状态。这是 InnoDB 存储引擎在事务处理和可靠性方面的重要特性之一。双写机制用于提高数据持久性和可靠性。原创 2023-10-30 12:45:11 · 410 阅读 · 0 评论 -
MySQL - SELECT * 、SELECT 全部字段
优缺点SELECT *SELECT 全部字段优点简便快捷,不需要指定字段明确指定查询的字段,提高可读性不需要更新查询,即使表结构变化控制字段顺序,结果集更符合需求可基于指定字段建立索引,提高性能更适合生产环境查询缺点性能开销较大,解析数据字典冗长,需逐一列出字段结果输出顺序不受控制,可能与表定义不符维护成本较高,表结构变化时需更新可读性较差,不明确指定字段不适合快速检查数据或编写快速查询原创 2023-11-01 01:00:00 · 386 阅读 · 1 评论 -
MySQL - 怎么理解索引?
总之,索引是数据库中用于提高数据检索性能的关键工具,它在数据库系统中发挥着重要作用。正确设计和使用索引可以显著提高查询效率,但过多或不正确的索引可能会导致性能下降。索引是一种数据结构,用于提高数据库查询性能和加速数据检索过程。原创 2023-10-31 00:30:00 · 154 阅读 · 2 评论 -
MySQL - 为什么需要 redo log?
总的来说,Redo日志是数据库管理系统中的关键组件,它确保了数据库的数据持久性、一致性和可恢复性。它与WAL机制一起工作,提供了高性能的同时,也提供了数据的安全保障,特别是在数据库异常崩溃后,能够保证数据的一致性。为什么需要 redo log?原创 2023-10-30 11:30:53 · 446 阅读 · 0 评论 -
MySQL - 系统库之 mysql
系统库是一个包含有关MySQL服务器的配置和权限信息的系统数据库。系统库允许管理员管理用户、权限和服务器配置,以确保安全性和有效性。是MySQL服务器的核心部分,用于管理和控制访问和配置。下面对比四个MySQL系统库(MySQL 系统库中的。原创 2023-11-03 00:15:00 · 136 阅读 · 0 评论 -
MySQL - 系统库之 information_schema
用于存储数据库元数据(metadata)。包含了有关数据库服务器、数据库、表、列、索引、权限、存储引擎和其他数据库对象的信息。以下是一个对比表格,用于对比。原创 2023-11-02 05:15:00 · 424 阅读 · 0 评论 -
MySQL - 系统库之 sys
【代码】MySQL - 系统库之 sys。原创 2023-11-02 03:45:00 · 656 阅读 · 0 评论 -
MySQL - 系统库之 performance_schema
要使配置生效,需要重启 MySQL 服务器。:在 MySQL 配置文件(通常是。:使用 SQL 查询语句从。保存并关闭配置文件。查询锁等待最多的查询。原创 2023-11-02 01:15:00 · 274 阅读 · 0 评论 -
MySQL - 覆盖索引、回表查询
在InnoDB存储引擎中,聚簇索引是特殊类型的索引,它的叶子节点存储整个行记录而不仅仅是索引列的值。只有一个聚簇索引,它通常是主键索引,因为主键是唯一标识一行记录的。在这种情况下,如果查询可以利用主键索引获取所有所需数据,就可以实现覆盖索引。否则,如果需要从主表中获取其他列数据,就会发生回表查询。总结,覆盖索引是一种性能优化技术,允许查询从索引中获取所有需要的数据,而不需要回表到主表。回表查询则是当索引无法提供全部数据时,必须回到主表查找其他列数据的操作。原创 2023-11-02 00:15:00 · 262 阅读 · 0 评论 -
非负的整型怎么定义字段类型?状态只有0和1?还有只有几个状态?几十个状态?
对于有几十个状态或更多的情况,不建议使用ENUM或TINYINT,因为这会使数据库模式变得复杂。在这种情况下,我的想法是使用一个关联表来存储状态(或者字段冗余一个状态介绍:毕竟状态数量有限且不太频繁更改)。原创 2023-11-01 00:45:00 · 205 阅读 · 0 评论 -
MySQL - Redo Log 和 Binlog
Redo Log (重做日志) :Binlog (二进制日志) :Redo Log和Binlog之间的区别:Redo Log主要用于保证事务的持久性和数据库的恢复,而Binlog主要用于数据复制、备份和实时数据同步。原创 2023-11-01 00:15:00 · 153 阅读 · 0 评论 -
Redis 选择跳跃表而不是红黑树
跳跃表的查找操作通常从最高层级开始,逐级向下查找,类似于二分查找的思想。这种多层级的策略使得查找操作的平均时间复杂度为 O(log N),类似于二分查找(平均时间复杂度也是 O(log N))。虽然跳跃表可以实现类似于二分查找的快速查找,但它的内部结构与传统的数组或链表不同,更适用于需要频繁插入和删除操作的情况。跳跃表是一种有序数据结构,它在某种程度上可以被看作是一种可以进行快速二分查找的有序链表,因为它的多层级结构允许快速跳过不必要的部分。原创 2023-10-31 00:00:00 · 382 阅读 · 0 评论 -
MySQL - mvcc
MVCC(多版本并发控制)是一种数据库并发控制机制,旨在提高数据库的并发性,避免锁定操作,从而减少等待和提高性能。MVCC 主要解决数据库读写操作之间的线程安全问题。MVCC 的优势在于它允许读取操作并发执行而,从而提高了数据库的并发性和性能。同时,MVCC 也能够保证数据的一致性,因为它允许读取到历史版本的数据,而不会读取到正在被其他事务修改的数据。原创 2023-10-25 12:06:50 · 620 阅读 · 0 评论 -
MySQL - 如何判断一行扫描数?
在MySQL中,一行扫描数是在执行查询操作时,需要扫描的行数,以找到与查询条件匹配的行。这个值反映了查询的效率。原创 2023-10-25 11:20:01 · 493 阅读 · 0 评论 -
Redis 的优势
总之,Redis是一种高性能、灵活且功能丰富的内存数据库,适用于各种不同的用例,从简单的缓存到复杂的实时应用程序。其速度、支持的数据类型、事务性和丰富的特性使其成为许多应用程序的首选数据存储解决方案。原创 2023-10-28 02:30:00 · 263 阅读 · 0 评论 -
MySQL - 对字符串字段创建索引
在数据库中,对字符串字段创建索引可以加速字符串字段的查询:原创 2023-10-25 04:15:00 · 627 阅读 · 2 评论 -
MySQL - 为什么官方建议使用自增长主键作为索引
虽然自增长主键有很多优点,但并不是所有情况都适用。在某些情况下,使用其他类型的主键,如UUID或自然键,可能更合适,这取决于具体的业务需求和数据模型。然而,总体来说,自增长主键是一种广泛应用的最佳实践,可以提高数据库性能和可维护性。原创 2023-10-25 03:00:00 · 898 阅读 · 0 评论 -
MySQL - B-树和B+树
在 MySQL 中,通常使用 B+树作为索引数据结构,因为它在范围查询和遍历方面具有显著的优势,适用于数据库的常见查询操作。B-树在某些情况下也可能用到,但 B+树更常见且性能更好,特别是对于大型数据库系统。在 MySQL 数据库中,索引通常使用 B-树(B-tree)或 B+树(B+ tree)数据结构来组织和管理数据。原创 2023-10-23 21:30:00 · 485 阅读 · 0 评论 -
MySQL - UNION 与 UNION ALL
如果不需要去除重复行,或者在性能方面有考虑,可以使用。如果需要去除重复行并获得唯一的结果集,可以使用。来获得更快的合并结果。在 MySQL 中,原创 2023-10-28 03:00:00 · 323 阅读 · 0 评论 -
MySQL 8 - 处理 NULL 值 - is null、=null、is not null、<> null 、!= null
操作符来比较 NULL 值是不推荐的,因为 NULL 有特殊的语义。在 SQL 中,任何与 NULL 进行比较的结果都是 NULL,而不是 true 或 false。用于检查一个列是否不为 NULL。用于检查一个列是否为 NULL。来检查是否为 NULL 或不为 NULL,它们不会按预期工作。,因为前者能够正确处理 NULL 值,而后者不会按预期工作。来检查 NULL 值,而避免使用。来处理 NULL 值,而不是。:在 MySQL 中,使用。总结:在MySQL中,使用。原创 2023-10-29 03:45:00 · 2008 阅读 · 3 评论 -
MySQL - 为什么索引结构默认使用B+树,而不是其他?
B-Tree的缺点:红黑树的缺点:哈希索引的缺点:二叉树的缺点:原创 2023-10-29 03:00:00 · 454 阅读 · 0 评论 -
MySQL - 覆盖索引、索引下推
覆盖索引是一种索引,包含了查询中需要的所有列,而不仅仅是索引列本身。这种索引可以通过减少磁盘I/O和提高查询性能来优化数据库查询。当一个查询可以完全通过覆盖索引满足时,数据库不需要再访问主表的数据行,从而提高查询效率。索引下推是一种优化技术,它允许数据库在执行查询时尽早使用索引来筛选和过滤数据,而不是先获取所有数据再筛选。通过使用覆盖索引,数据库可以减少从主表获取数据的需求,而通过索引下推,可以减少不必要的数据行扫描。下推到索引层,只检索满足条件的数据行,而不必检索整个表的数据。原创 2023-10-29 01:00:00 · 567 阅读 · 0 评论 -
MySQL - Heap 表是什么?
Heap” 表是 MySQL 中的一种表类型,也称为内存表或临时表。与常见的存储引擎(如InnoDB、MyISAM等)不同,Heap 表将数据存储在内存中,而不是存储在磁盘上。这使得 Heap 表非常快速,适合用于需要快速读写临时数据的情况,例如临时计算或缓存。Heap 表通常用于需要快速临时数据存储和检索的情况,但要注意它的临时性和内存限制。在许多情况下,使用其他存储引擎(如InnoDB或MyISAM)更适合长期数据存储需求。原创 2023-10-28 03:30:00 · 484 阅读 · 1 评论 -
MySQL - 为什么InnoDB选择B+树索引?Change buffer?
Change buffer” 是 InnoDB 存储引擎中的一项重要性能优化机制,它主要用于减少磁盘 I/O 操作的次数,从而提高数据库的写入性能。延迟索引更新:当有写操作(如插入、更新、删除)需要修改B+树索引结构时,InnoDB不会立即将这些修改写入磁盘的索引页。相反,它将这些修改操作记录在"Change buffer" 中,同时在内存中维护一份待更新的索引树。减少随机磁盘写入。原创 2023-10-28 01:00:00 · 293 阅读 · 0 评论 -
MySQL - MyISAM 和 InnoDB
综上所述,MyISAM 和 InnoDB 在实现 B 树索引方式上有重要的区别,InnoDB 更适合需要事务支持、并发性能和数据完整性的应用,而 MyISAM 在某些情况下也有其用途,例如只读或读频繁的应用。它的数据文件和索引文件是分离的,数据文件按照主键的顺序存储数据,而索引文件包含指向数据行的引用。如果在 InnoDB 表上执行一系列修改操作,并在过程中发生错误,可以回滚到之前的状态,确保数据的完整性。它支持事务日志和重做日志,可以确保数据的完整性,并能够在崩溃后恢复到一个一致的状态。原创 2023-10-27 00:45:00 · 161 阅读 · 0 评论 -
MySQL - 主键索引和非主键索引
虽然主键索引是一种特殊的唯一性索引,但在MySQL中,主键索引与唯一性索引之间存在一些概念上的区别。主键索引要求每行都有一个唯一的主键值且不能为null,而唯一性索引则只要求索引列的值在索引中是唯一的可以有一个null值,普通索引可以包含重复值。原创 2023-10-26 00:45:00 · 330 阅读 · 1 评论 -
MySQL 的 ORDER BY 排序内部原理
在这种情况下,MySQL 将结果集存储在一个临时表中,然后使用内部的排序算法对临时表中的数据进行排序。需要注意的是,MySQL 的排序行为也受到配置参数和可用的硬件资源的影响。:如果查询中涉及到的列具有适当的索引,MySQL 通常会首先尝试使用索引来执行排序操作。这可以大大提高排序的性能。例如,如果对一个整数列排序,且该列具有索引,MySQL 可能会使用这个索引来获取排序后的结果。:执行一个 SQL 查询,MySQL 的查询优化器会生成一个查询执行计划,其中包括确定如何访问数据表和如何执行排序。原创 2023-10-23 00:30:00 · 361 阅读 · 0 评论