MySQL
文章平均质量分 89
若明天不见
时白发未生,轻狂尚有
展开
-
深入探索MySQL锁机制:揭秘死锁原因与RC隔离级别下的事务处理
本文分析了MySQL中RC隔离级别下INSERT操作的死锁问题,探讨了不同场景下死锁的产生原因,并提供了避免死锁的策略。建议包括按顺序插入数据、减少事务大小、使用INSERT...ON DUPLICATE KEY UPDATE代替REPLACE,以及快速提交事务,以降低死锁风险并提升数据库并发性能。原创 2024-04-29 14:43:40 · 921 阅读 · 0 评论 -
深入理解LRU缓存算法:原理、应用与优化
本文内容包括LRU原理、实现及局部性场景。LRU算法(Least Recently Used,最近最少使用算法)的思想是基于"时间局部性"原理,即在一段时间内,被访问过的数据在未来仍然会被频繁访问的概率较高。原创 2024-04-09 10:12:55 · 1395 阅读 · 0 评论 -
MySQL join原理及优化
本文主要介绍MySQL JOIN原理、嵌套循环连接算法(Nested-Loop Join)及优化策略MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录两个表按照各自的条件过滤,过滤完成之后,计算参与 join 的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表原创 2023-11-12 14:58:13 · 1206 阅读 · 0 评论 -
MySQL连接池配置及FullGC分析
本文主要讲述MySQL连接池配置不合适时,由于MySQL以虚引用的方式作为线程清理的后备手段,导致JVM年老代随时间缓慢增长,直至FullGC的问题。为了优化数据库连接池配置,使得JVM进行尽量少的FullGC导致服务故障,本文提供了多种解决方案单独的MySQL清理,负责关闭被遗弃的MySQL连接,即没有被显式关闭的连接。发现容器服务的老年代在不断的增长,直到。原创 2023-09-02 15:15:00 · 367 阅读 · 0 评论 -
MySQL 主从同步及延迟原因分析
本文主要介绍MySQL主从同步的基本原理、主从同步延迟原因分析以及并发复制策略。在主库上,影响并发度的原因就是各种锁。而日志在备库上的执行,就是图中备库上`sql_thread`更新数据 (DATA) 的逻辑。如果是用单线程的话,就会导致备库应用日志不够快,造成主备延迟。原创 2023-04-15 21:27:11 · 2411 阅读 · 0 评论 -
MySQL 多库事务回滚
本文主要介绍MySQL多库事务回滚方案,包括本地及分布式的事务解决方案,并附上示例通常在本地单源数据库,使用Spring事务控制,方法上添加`@Transactional`注解即可。然而`@Transactionnal`是无法管理多个数据源的事务回滚(当发生异常时,只会回滚离抛出异常最近的数据源的数据)。本地多源数据库需要以分布式锁来实现本地多源数据库事务控制,或以添加多个事务管理器的方式简易达到多库事务控制原创 2022-10-23 16:15:00 · 1315 阅读 · 0 评论 -
MySQL 数据类型及占用空间
本文总结MySQL数据类型及占用空间,主要包括整型,浮点型及字符串类型。还介绍最大行大小限制、字符编码对应的占用空间原创 2022-07-24 15:54:40 · 5899 阅读 · 0 评论 -
MySQL 索引的数据结构及类型
本文主要总结MySQL InnoDB索引的数据结构及类型,举例说明了B+树高度能存储的的数量,总结说明索引的类型及优点在InnoDB引擎中,索引的底层数据结构是B+树。非叶子节点:存的就是主键索引的指针。叶子节点:叶子节点存储数据。行数据的组织方式是以页为最小单位,按照链表的方式来组织的。非叶子节点上的指针指向的叶子节点就算是在树上。而对于叶子节点,一个页内是存放了多条行记录的,这多条记录是按照索引从小到大排序的,所以查询的过程首先是根据B+树索引定位到具体的页,然后页内使用二分查查找法去找具体数据..原创 2022-07-17 18:33:47 · 1644 阅读 · 0 评论 -
MySQL 日志系统及语句执行过程
本文主要归纳总结MySQL的语句执行过程,以及日志系统,包括redo log、undo log及bin log。日志系统的内容也包括Write-Ahead Logging技术及持久化过程,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。.原创 2022-08-19 14:30:00 · 428 阅读 · 0 评论 -
MySQL 索引优化及失效场景
本文主要介绍MySQL索引的失效场景及索引优化。失效场景包括左侧模糊查询、OR操作、联合索引不满足最左前缀原则、索引列参与运算、不等于比较、NULL值、内置函数、类型隐式转换等。还介绍了MySQL离散度及MR2、ICP优化...原创 2022-07-28 22:46:36 · 603 阅读 · 0 评论 -
MySQL 锁的类型、加锁规则及详细案例
本文主要总结MySQL 锁的类型、加锁规则及详细案例。默认情况下,InnoDB在[REPEATABLE READ]事务隔离级别下运行。在这种情况下,InnoDB使用`next-key`锁进行搜索和索引扫描,这可以防止幻行。索引锁的类型包括行锁、间隙锁及next-key锁。以及总结了各种场景的加锁案例......原创 2022-08-04 22:04:58 · 1286 阅读 · 0 评论 -
MySQL 事务与InnoDB的MVCC实现机制
本文主要介绍总结了MySQL事务与InnoDB的MVCC实现机制。MVCC全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是为MySQL并发场景下无锁生成读视图进行读操作来进行多版本控制。MySQL中InnoDB中实现了事务(MVCC+锁),其中通过MVCC解决隔离性问题。具体而言,MVCC就是为了实现读-写冲突不加锁。.........原创 2022-08-12 23:34:26 · 330 阅读 · 0 评论 -
MySQL binlog模式及主备的基本原理
MySQL binlog是二进制格式的日志文件,用于记录MySQL内部对数据库的修改操作,主要作用为数据库的主从复制及增量恢复STATEMENT,ROW,MIXEDMySQL 5.0版本前,因为binlog模式只有statement,为了避免主从复制不一致,只能使用RR隔离模式配合。MySQL 5.1+ 可以使用RC + Row进行binlog主从复制,在绝大多数情况无需加间隙锁,以提获得更好的并发性,且可保证主从复制一致性Oracle及sqlserver默认使用RC隔离级别。...原创 2022-08-25 22:13:53 · 708 阅读 · 1 评论 -
Mybatis 敏感数据加密
为增加数据存储的安全性,避免MySQL数据库被入侵导致拖库等情况,动态代理Mybatis Mapper类,使用对称加密算法AES对敏感数据进行加解密操作实现思路:1. Spring自动注入配置2. 实现BeanPostProcessor接口,初始化Bean时对@EncryptMapper注解修饰类添加动态代理3. 动态代理类EncryptMapperProxy对@Encrypt注解修饰的字段,进行写入加解密操作4. 使用AES算法对数据进行对称加密。在写入时执行加密操作,读取时执行解密操作原创 2021-01-23 19:48:10 · 3575 阅读 · 1 评论 -
MySQL hash索引及B+Tree索引
MySQL hash索引及B+Tree索引红黑树B树B+树B+树是在B树的基础上进行改造的,它的数据都是叶子节点,同时叶子节点之间还加了指针以形成链表索引对比查询时间。B+ Tree为 O(log(n)),与树的高度有关;Hash为O(1)在内存中,红黑树比B树效率更高;若是涉及磁盘操作,则B树更优B树需要做局部的中序遍历,可能要跨层访问。而B+树由于所有数据都在叶子结点,不...原创 2018-12-22 15:48:46 · 5279 阅读 · 0 评论 -
MySQL group_concat()函数
功能将group by产生的同一个分组中的值拼接起来,返回一个字符串结果。语法group_concat( [distinct] 需拼接字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )separator是一个字符串值,缺省为,示例SELECT GROUP_CONCAT(name) AS namesFROM testWHERE ...原创 2018-11-17 19:28:11 · 372 阅读 · 0 评论 -
Mybatis常用sql
mybatis-generator能自动生成简单的CRUD操作,而条件及多表查询需自定义,下述为常用的SQL操作的mybatis示例合并结果集UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。DAOList<City> selectCity(List<String> .原创 2018-11-17 20:37:34 · 126 阅读 · 0 评论