<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[javaJasonjava的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/javaJasonjava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; javaJasonjava]]></copyright><item><title><![CDATA[Mysql执行计划]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165956</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165956</guid><author>javaJasonjava</author><pubDate>Thu, 05 Dec 2024 21:20:42 +0800</pubDate><description><![CDATA[这种情况下，需要检查WHERE语句中所使用的的列，看是否可以通过给这些列中某个或多个添加索引的方法来提高查询性能。这是查询中SELECT的序号。ref列显示了在key列记录的索引中表查找值所⽤到的列或常量，常见的有：const（常量），func，null，字段名。这列包含了MySQL解析查询的额外信息，通过这些信息，可以更准确的理解 MySQL 到底是如何执行查询的。rows列表示根据表统计信息及选用情况，大致估算出找到所需的记录或所需读取的行数，数值越小越好。查询执行的类型，描述了查询是如何执行的。]]></description><category></category></item><item><title><![CDATA[Mysql锁]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165926</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165926</guid><author>javaJasonjava</author><pubDate>Thu, 05 Dec 2024 21:20:16 +0800</pubDate><description><![CDATA[由于表级锁一次会将整个表锁定，是针对非索引字段加的锁，所以可以很好的避免困扰我们的死锁问题。行级锁定最大的特点就是锁定对象的粒度很小，是针对索引字段加的锁，只对当前操作的行记录进行加锁。共享锁的特性主要是为了支持并发的读取数据，读取数据的时候不支持修改，避免出现重复读的问题。意向锁和共享锁和排它锁互斥（这里指的是表级别的共享锁和排他锁，意向锁不会与行级的共享锁和排他锁互斥）。操作，读取操作不会因此去等待记录上X锁的释放，而是会去读取行的一个快照。的行锁是针对索引字段加的锁，表级锁是针对非索引字段加的锁。]]></description><category></category></item><item><title><![CDATA[Mysql读写分离&分库分表]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165825</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165825</guid><author>javaJasonjava</author><pubDate>Tue, 03 Dec 2024 21:38:44 +0800</pubDate><description><![CDATA[读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。这样的话，就能够小幅提升写性能，大幅提升读性能。一般情况下，我们都会选择一主多从，也就是一台主数据库负责写，其他的从数据库负责读。主库和从库之间会进行数据同步，以保证从库中数据的准确性。这样的架构实现起来比较简单，并且也符合系统的写少读多的特点。分库就是将数据库中的数据分散到不同的数据库上，可以垂直分库，也可以水平分库。垂直分库就是把单一数据库按照业务进行划分，不同的业务使用不同的数据库，进而将一个数据库的压力分担到多个数据库。]]></description><category></category></item><item><title><![CDATA[Mysql事务]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144156360</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144156360</guid><author>javaJasonjava</author><pubDate>Tue, 03 Dec 2024 21:38:13 +0800</pubDate><description><![CDATA[简单来说，数据库事务可以保证多个对数据库的操作构成一个逻辑上的整体，这些数据库操作遵循着要么全部执行成功，要么全部不执行。MySQLSQL ServerOracleAtomicityIsolationDurability👉 只有保证了事务的持久性、原子性、隔离性之后，一致性才能得到保障。也就是说 A、I、D 是手段，C 是目的！而对于这四大特性，实际上分为两个部分。其中的原子性、一致性、持久化，实际上是由InnoDB中的两份日志来保证的，即redo log和undo log。]]></description><category></category></item><item><title><![CDATA[Redis持久化详解AOF&RDB]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/141533726</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/141533726</guid><author>javaJasonjava</author><pubDate>Sun, 01 Dec 2024 10:32:26 +0800</pubDate><description><![CDATA[在fork出子进程时的拷贝，以及在重写时，如果有新数据写入，主线程就会将命令记录到两个aof日志内存缓冲区中。混合持久化工作在 AOF 日志重写过程，当开启了混合持久化时，在 AOF 重写日志时，fork 出来的重写子进程会先将与主线程共享的内存数据以 RDB 方式写入到 AOF 文件，然后主线程处理的操作命令会被记录在重写缓冲区里，重写缓冲区里的增量命令会以 AOF 方式写入到 AOF 文件，写入完成后通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的的 AOF 文件。]]></description><category></category></item><item><title><![CDATA[Mysql索引（二）]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165682</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165682</guid><author>javaJasonjava</author><pubDate>Sun, 01 Dec 2024 10:23:44 +0800</pubDate><description><![CDATA[正因如此，红黑树的查询效率稍有下降，因为红黑树的平衡性相对较弱，可能会导致树的高度较高，这可能会导致一些数据需要进行多次磁盘IO操作才能查询到，这也是MySQL没有选择红黑树的主要原因。如果数据都存储在内存中，采用AVL树来存储，还是可以的，查询效率非常高。不过我们的数据是存在磁盘中，采用这种结构，每个节点对应一个磁盘块，数据量大的时候，也会和二叉树一样，会导致树的高度变高，这样逻辑上很近的节点实际可能非常远，无法很好的利用磁盘预读（局部性原理），会增加IO次数，所以用这种结构存储数据也是不可取的。]]></description><category></category></item><item><title><![CDATA[Mysql索引（一）]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165626</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144165626</guid><author>javaJasonjava</author><pubDate>Sun, 01 Dec 2024 10:08:08 +0800</pubDate><description><![CDATA[索引是存储引擎用于快速找到记录的一种数据结构。举个例子：如果查找一本书中的某个特定主题，一般会先看书的目录（类似索引），找到对应页面。在MySQL，存储引擎采用类似的方法使用索引，高效获取查找的数据。索引的分类从存储结构上来划分Btree索引（B+tree，B-tree)hash哈希索引full-index全文索引从应用层次上来划分普通索引：一个索引只包含单个列，一个表可以有多个普通索引唯一索引：索引列的值必须唯一，但允许有空值复合索引：一个索引包含多个列。]]></description><category></category></item><item><title><![CDATA[SQL执行原理]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139507</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139507</guid><author>javaJasonjava</author><pubDate>Sun, 01 Dec 2024 10:05:32 +0800</pubDate><description><![CDATA[TCP 网络连接建立成功后，服务端与客户端之间会建立一个session会话，紧接着会对登录的用户名和密码进行效验，首先会查询自身的用户表信息，判断输入的用户名是否存在，如果存在则会判断输入的密码是否正确。如果我们所需要的数据是随机分散在不同页的不同扇区中，那么找到相应的数据需要等到磁臂旋转到指定的页，然后盘片寻找到对应的扇区，才能找到我们所需要的一块数据，依。假设我们已经找到了第一块数据，并且其他所需的数据就在这一块数据后边，那么就不需要重新寻址，可以依次拿到我们所需的数据，这个就叫顺序 IO。]]></description><category></category></item><item><title><![CDATA[Mysql后台线程]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139245</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139245</guid><author>javaJasonjava</author><pubDate>Sat, 30 Nov 2024 13:55:51 +0800</pubDate><description><![CDATA[在InnoDB的后台线程中，分为4类，分别是：Master Thread 、IO Thread、Purge Thread、Page Cleaner Thread。]]></description><category></category></item><item><title><![CDATA[InnoDB磁盘架构]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139035</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144139035</guid><author>javaJasonjava</author><pubDate>Sat, 30 Nov 2024 13:54:53 +0800</pubDate><description><![CDATA[关于MysqlInnodb引擎对底层页的一次原子访问的过程叫做。什么意思呢？我们来举一个例子，假如我们在有索引的数据表中插入一条记录，那么我们需要在Innodb引擎的聚簇索引B+树的数据页中插入这条记录，更改这条记录的上一条记录的的内容，使其指向这条记录；然后还需要在辅助索引B+树的数据页的中插入这条记录的索引信息；上边描述的这个过程就称为对底层页的一次原子访问，也就是说这次原子访问可能修改了多个数据页的信息，这个过程是不可分割的。]]></description><category></category></item><item><title><![CDATA[InnoDB内存架构]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144137878</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144137878</guid><author>javaJasonjava</author><pubDate>Fri, 29 Nov 2024 15:08:04 +0800</pubDate><description><![CDATA[MySQL5.5 版本开始，默认使用InnoDB存储引擎，它擅长事务处理，具有崩溃恢复特性，在日常开发中使用非常广泛。下面是InnoDB架构图，左侧为内存结构，右侧为磁盘结构。]]></description><category></category></item><item><title><![CDATA[InnoDB逻辑存储结构]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/144133730</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/144133730</guid><author>javaJasonjava</author><pubDate>Fri, 29 Nov 2024 14:08:24 +0800</pubDate><description><![CDATA[大家都知道mysql中数据是存储在物理磁盘上的，而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢，如果每次操作都对磁盘进行频繁读写的话，那么性能一定非常差。为了解决上述问题，InnoDB将数据划分为若干页，以页作为磁盘与内存交互的基本单位，一般页的大小为16KB。这样的话，一次性至少读取1页数据到内存中或者将1页数据写入磁盘。通过减少内存与磁盘的交互次数，从而提升性能。如果一条数据正在被使用，那么在接下来一段时间内大概率还会再被使用。可以认为热点数据缓存都属于这种思路的实现。]]></description><category></category></item><item><title><![CDATA[Mysql数据类型]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/143470522</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/143470522</guid><author>javaJasonjava</author><pubDate>Sun, 03 Nov 2024 20:46:14 +0800</pubDate><description><![CDATA[在MySQL中支持的主要整数类型是和BIGINT。这些类型在很大程度上是相同的，只有它们存储的值的大小是不相同的。MySQL以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展。当从数据库检索一个值时，可以把这个值加长到指定的长度。例如，指定一个字段的类型为 INT(6)，就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是，使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。]]></description><category></category></item><item><title><![CDATA[Mysql开发规范]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/143467207</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/143467207</guid><author>javaJasonjava</author><pubDate>Sun, 03 Nov 2024 20:22:47 +0800</pubDate><description><![CDATA[命名规范的对象，是指数据库SCHEMA、表TABLE、字段COLUMN、索引INDEX、约束CONSTRAINTS等。]]></description><category></category></item><item><title><![CDATA[Redis事务]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/141651203</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/141651203</guid><author>javaJasonjava</author><pubDate>Wed, 28 Aug 2024 22:12:11 +0800</pubDate><description><![CDATA[Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令，一个事务中所有命令都会被序列化。在事务执行过程，会按照顺序串行化执行队列中的命令，其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说：redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。事务是一个单独的隔离操作：事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中，不会被其他客户端发送来的命令请求所打断。事务是一个原子操作：事务中的命令要么全部被执行，要么全部都不执行。]]></description><category></category></item><item><title><![CDATA[Redis持久化]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/141612195</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/141612195</guid><author>javaJasonjava</author><pubDate>Tue, 27 Aug 2024 20:55:55 +0800</pubDate><description><![CDATA[在fork出子进程时的拷贝，以及在重写时，如果有新数据写入，主线程就会将命令记录到两个aof日志内存缓冲区中。混合持久化工作在 AOF 日志重写过程，当开启了混合持久化时，在 AOF 重写日志时，fork 出来的重写子进程会先将与主线程共享的内存数据以 RDB 方式写入到 AOF 文件，然后主线程处理的操作命令会被记录在重写缓冲区里，重写缓冲区里的增量命令会以 AOF 方式写入到 AOF 文件，写入完成后通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的的 AOF 文件。]]></description><category></category></item><item><title><![CDATA[Redis底层数据结构]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/141573388</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/141573388</guid><author>javaJasonjava</author><pubDate>Mon, 26 Aug 2024 21:19:11 +0800</pubDate><description><![CDATA[跳跃表(skiplist）是一种有序数据结构，它通过在每个节点中维持多个指向其他节点的指针，从而达到快速访问节点的目的。它的效率和红黑树以及 AVL 树不相上下，但实现起来比较容易。是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成。跳跃表支持平均O (LogN)、最坏O(N) 复杂度的节点查找，还可以通过顺序性操作来批量处理节点。在大部分情况下，跳跃表的效率可以和平衡树相媲美，并且因为跳跃表的实现比平衡树要来得更为简单，所以有不少程序都使用跳跃表来代替平衡树。]]></description><category></category></item><item><title><![CDATA[基本数据类型及命令]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/141535826</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/141535826</guid><author>javaJasonjava</author><pubDate>Sun, 25 Aug 2024 22:13:06 +0800</pubDate><description><![CDATA[zset和set一样也是string类型元素的集合，且不允许重复的元素，不同的是每个元素都会关联一个double类型的分数，redis通过分数来为集合中的元素进行排序，zset中元素是唯一的但是分数可以重复。Redis HyperLogLog 是用来做基数统计的算法，HyperLogLog 的优点是，在输入元素的数量或者体积非常非常大时，计算基数所需的空间总是固定的并且是很小的。Set是string类型的无序唯一集合，集合是通过hash表实现的，所以添加，删除，查找的复杂度都是O(1)。]]></description><category></category></item><item><title><![CDATA[2023「总结」，2024「展望」]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/135425971</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/135425971</guid><author>javaJasonjava</author><pubDate>Sat, 06 Jan 2024 14:26:53 +0800</pubDate><description><![CDATA[时光荏苒，岁月如梭，转眼已经进入2024年了。回想过去的2023年，成长了很多，有收获，有付出，也有一丝丝的遗憾。其实在写这篇文章之前我思考了很久，一直不知如何下手，也许这是一个新手都会遇到的问题，这也是我第一次做年度复盘。所以我看了很多网友的复盘帖并从中学习一些复盘经验，不断总结自己这一年的经历。对自己在过去的2023年从多个方面进行了总结。]]></description><category></category></item><item><title><![CDATA[16、Mysql用户工具]]></title><link>https://blog.youkuaiyun.com/javaJasonjava/article/details/135350199</link><guid>https://blog.youkuaiyun.com/javaJasonjava/article/details/135350199</guid><author>javaJasonjava</author><pubDate>Tue, 02 Jan 2024 21:08:57 +0800</pubDate><description><![CDATA[接口工具
Mysql Workbench
SQLyog
phpMyAdmin
Adminer
命令行工具集
Percona Toolkit
Maatkit and Aspersa
The openark kit
Mysql Workbench工具集
SQL实用集
common_schema
mysql-sr-lib
Mysql UDF库
Mysql Forge
监测工具
开源的监控工具
Nagios
Zabbix
Zenoss
Hyperic HQ
OpenNMS
Groundwork Open Sourc]]></description><category></category></item></channel></rss>