<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Database on Leanku</title>
    <link>https://blog.leanku.com/categories/database/</link>
    <description>Recent content in Database on Leanku</description>
    <image>
      <url>https://blog.leanku.com/papermod-cover.png</url>
      <link>https://blog.leanku.com/papermod-cover.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Mon, 13 Oct 2025 20:30:01 +0800</lastBuildDate><atom:link href="https://blog.leanku.com/categories/database/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MySQL 中主要的日志类型</title>
      <link>https://blog.leanku.com/post/database/mysql-%E4%B8%AD%E4%B8%BB%E8%A6%81%E7%9A%84%E6%97%A5%E5%BF%97%E7%B1%BB%E5%9E%8B/</link>
      <pubDate>Mon, 13 Oct 2025 20:30:01 +0800</pubDate>
      
      <guid>https://blog.leanku.com/post/database/mysql-%E4%B8%AD%E4%B8%BB%E8%A6%81%E7%9A%84%E6%97%A5%E5%BF%97%E7%B1%BB%E5%9E%8B/</guid>
      <description>MySQL 中主要的日志类型 MySQL 提供了多种日志类型，每种都有其特定的目的和格式。理解这些日志对于数据库管理、性能调优、数据恢复和故障排查至关重要。
下面我将详细介绍 MySQL 中主要的日志类型及其格式
总结概览 日志类型 主要目的 格式 是否默认开启 错误日志 记录 MySQL 启动、运行、停止时的错误、警告和提示信息。 文本格式 是 二进制日志 记录所有更改数据的语句，用于主从复制和数据恢复。 STATEMENT, ROW, MIXED 否 (8.0默认开启) 通用查询日志 记录所有到达 MySQL 的客户端连接和执行的语句。 文本格式 / CSV 格式 否 慢查询日志 记录执行时间超过指定阈值的查询，用于性能优化。 文本格式 / CSV 格式 否 重做日志 InnoDB 特有的，用于保证事务的持久性和崩溃恢复。 物理格式（二进制） 是 回滚日志 InnoDB 特有的，用于保证事务的原子性和 MVCC。 逻辑格式 是 详细解析 1. 错误日志 这是 DBA 首先需要查看的日志，当数据库出现任何异常时，它通常是排查问题的起点。
内容：启动/关闭信息、错误信息、警告信息、在复制环境中从服务器线程的启动信息等。
格式：纯文本格式，易于阅读。
配置参数：
log_error：指定错误日志文件的位置。 示例内容：
2023-10-27T08:00:00.000000Z 0 \[Note\] Server started. 2023-10-27T08:01:23.456789Z 5 \[Warning\] Aborted connection 5 to db: &amp;#39;test&amp;#39; user: &amp;#39;root&amp;#39; host: &amp;#39;localhost&amp;#39; 2.</description>
    </item>
    
    <item>
      <title>Mysql窗口函数 </title>
      <link>https://blog.leanku.com/post/database/mysql%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/</link>
      <pubDate>Thu, 20 Feb 2025 20:46:01 +0800</pubDate>
      
      <guid>https://blog.leanku.com/post/database/mysql%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/</guid>
      <description>Mysql窗口函数 一、什么是窗口函数？ 窗口函数是一种在查询结果的&amp;quot;窗口&amp;quot;上执行计算的函数，它不会像常规聚合函数那样将多行合并为一行，而是为每一行返回一个值，同时保持原始行数不变。
基本语法 &amp;lt;窗口函数&amp;gt;(&amp;lt;参数&amp;gt;) OVER ( [PARTITION BY &amp;lt;分区表达式&amp;gt;] [ORDER BY &amp;lt;排序表达式&amp;gt; [ASC | DESC]] [ROWS/RANGE &amp;lt;窗口范围&amp;gt;] ) ‌&amp;lt;窗口函数&amp;gt;‌：可以是聚合函数（如SUM、AVG）或专用函数（如ROW_NUMBER、RANK）。‌‌ ‌OVER()‌：必需子句，定义窗口框架。‌‌ ‌PARTITION BY‌：可选，用于分组数据；若省略，窗口覆盖整个结果集。 ‌ORDER BY‌：可选，指定窗口内行的排序顺序。‌‌ ‌窗口范围‌：可选，默认ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW。‌‌ 二、 准备测试数据 -- 创建销售数据表 CREATE TABLE sales ( sale_id INT PRIMARY KEY, salesperson VARCHAR(50), region VARCHAR(50), sale_date DATE, amount DECIMAL(10,2) ); INSERT INTO sales VALUES (1, &amp;#39;张三&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;2023-01-15&amp;#39;, 5000), (2, &amp;#39;李四&amp;#39;, &amp;#39;上海&amp;#39;, &amp;#39;2023-01-16&amp;#39;, 8000), (3, &amp;#39;王五&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;2023-01-17&amp;#39;, 6000), (4, &amp;#39;张三&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;2023-02-01&amp;#39;, 7000), (5, &amp;#39;李四&amp;#39;, &amp;#39;上海&amp;#39;, &amp;#39;2023-02-02&amp;#39;, 9000), (6, &amp;#39;赵六&amp;#39;, &amp;#39;广州&amp;#39;, &amp;#39;2023-02-03&amp;#39;, 4000), (7, &amp;#39;王五&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;2023-02-04&amp;#39;, 5500), (8, &amp;#39;张三&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;2023-03-01&amp;#39;, 8500); -- 创建员工薪资表 CREATE TABLE employee_salary ( emp_id INT, name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10,2), hire_date DATE ); INSERT INTO employee_salary VALUES (1, &amp;#39;张三&amp;#39;, &amp;#39;技术部&amp;#39;, 15000, &amp;#39;2020-01-15&amp;#39;), (2, &amp;#39;李四&amp;#39;, &amp;#39;技术部&amp;#39;, 12000, &amp;#39;2021-03-20&amp;#39;), (3, &amp;#39;王五&amp;#39;, &amp;#39;销售部&amp;#39;, 8000, &amp;#39;2022-06-10&amp;#39;), (4, &amp;#39;赵六&amp;#39;, &amp;#39;销售部&amp;#39;, 7500, &amp;#39;2022-08-05&amp;#39;), (5, &amp;#39;钱七&amp;#39;, &amp;#39;技术部&amp;#39;, 13000, &amp;#39;2020-11-30&amp;#39;), (6, &amp;#39;孙八&amp;#39;, &amp;#39;人事部&amp;#39;, 9000, &amp;#39;2021-09-15&amp;#39;), (7, &amp;#39;周九&amp;#39;, &amp;#39;技术部&amp;#39;, 16000, &amp;#39;2019-05-20&amp;#39;); 1.</description>
    </item>
    
    <item>
      <title>Mysql中的回表</title>
      <link>https://blog.leanku.com/post/database/mysql%E4%B8%AD%E7%9A%84%E5%9B%9E%E8%A1%A8/</link>
      <pubDate>Tue, 23 Apr 2024 20:46:01 +0800</pubDate>
      
      <guid>https://blog.leanku.com/post/database/mysql%E4%B8%AD%E7%9A%84%E5%9B%9E%E8%A1%A8/</guid>
      <description>MYSQL中的回（Back to Table）表说明 一、 基本概念 回表是指当使用非聚簇索引（二级索引）进行查询时，首先在索引中查找到所需数据的主键值，然后再根据这个主键值回到主键索引（聚簇索引）中查找完整数据行的过程。
二、核心原理 聚簇索引 vs 非聚簇索引 -- 创建测试表 CREATE TABLE user_info ( id INT PRIMARY KEY, -- 主键，聚簇索引 name VARCHAR(50), email VARCHAR(100), age INT, created_at DATETIME, INDEX idx_email (email), -- 非聚簇索引（二级索引） INDEX idx_name_age (name, age) -- 复合非聚簇索引 ); 索引结构对比 聚簇索引（主键索引）结构： 索引节点 -&amp;gt; 叶子节点包含完整数据行 [id:1] -&amp;gt; [id:1, name:&amp;#39;张三&amp;#39;, email:&amp;#39;zhang@xx.com&amp;#39;, age:25, ...] [id:2] -&amp;gt; [id:2, name:&amp;#39;李四&amp;#39;, email:&amp;#39;li@xx.com&amp;#39;, age:30, ...] 非聚簇索引（二级索引）结构： 索引节点 -&amp;gt; 叶子节点只包含索引列 + 主键值 [email:&amp;#39;li@xx.com&amp;#39;] -&amp;gt; [主键id:2] [email:&amp;#39;zhang@xx.</description>
    </item>
    
    <item>
      <title>MySQL分库分表（无中间件）</title>
      <link>https://blog.leanku.com/post/database/mysql-%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E6%97%A0%E4%B8%AD%E9%97%B4%E4%BB%B6/</link>
      <pubDate>Tue, 23 Apr 2024 20:46:01 +0800</pubDate>
      
      <guid>https://blog.leanku.com/post/database/mysql-%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E6%97%A0%E4%B8%AD%E9%97%B4%E4%BB%B6/</guid>
      <description>MySQL分库分表（无中间件） 一、 分库分表方案设计 1. 垂直拆分 (按业务模块) -- 原始单体数据库 CREATE DATABASE ecommerce; USE ecommerce; -- 垂直拆分后的数据库 -- 用户库 CREATE DATABASE user_center; USE user_center; CREATE TABLE users ( user_id BIGINT PRIMARY KEY, username VARCHAR(50) UNIQUE, email VARCHAR(100) UNIQUE, password VARCHAR(100), mobile VARCHAR(20), status TINYINT DEFAULT 1, created_at DATETIME, updated_at DATETIME ); CREATE TABLE user_profiles ( user_id BIGINT PRIMARY KEY, real_name VARCHAR(50), avatar VARCHAR(200), gender TINYINT, birthday DATE, bio TEXT ); CREATE TABLE user_address ( address_id BIGINT PRIMARY KEY, user_id BIGINT, province VARCHAR(50), city VARCHAR(50), district VARCHAR(50), detail VARCHAR(200), is_default TINYINT DEFAULT 0, INDEX idx_user_id (user_id) ); -- 订单库 CREATE DATABASE order_center; USE order_center; CREATE TABLE orders ( order_id BIGINT PRIMARY KEY, user_id BIGINT, total_amount DECIMAL(10,2), status TINYINT, payment_status TINYINT, created_at DATETIME, paid_at DATETIME ); CREATE TABLE order_items ( item_id BIGINT PRIMARY KEY, order_id BIGINT, product_id BIGINT, product_name VARCHAR(100), price DECIMAL(10,2), quantity INT, INDEX idx_order_id (order_id) ); -- 商品库 CREATE DATABASE product_center; USE product_center; CREATE TABLE products ( product_id BIGINT PRIMARY KEY, name VARCHAR(100), category_id INT, price DECIMAL(10,2), stock INT, status TINYINT, created_at DATETIME ); CREATE TABLE categories ( category_id INT PRIMARY KEY, name VARCHAR(50), parent_id INT ); 2.</description>
    </item>
    
    <item>
      <title>MySQL索引类型</title>
      <link>https://blog.leanku.com/post/database/mysql%E7%B4%A2%E5%BC%95%E7%B1%BB%E5%9E%8B/</link>
      <pubDate>Tue, 23 Apr 2024 20:46:01 +0800</pubDate>
      
      <guid>https://blog.leanku.com/post/database/mysql%E7%B4%A2%E5%BC%95%E7%B1%BB%E5%9E%8B/</guid>
      <description>MySQL索引类型 索引是帮助MySQL高效获取数据的数据结构，类似于书籍的目录，可以大大加快查询速度。
一、索引类型 1. B-Tree 索引（最常用） 特点 默认的索引类型 适用于全键值、键值范围或键值前缀查找 支持排序和分组 创建语法 -- 单列索引 CREATE INDEX idx_name ON table_name(column_name); -- 多列复合索引 CREATE INDEX idx_name ON table_name(col1, col2, col3); -- 创建表时指定 CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100), age INT, INDEX idx_name (name), INDEX idx_email_age (email, age) ); 适用查询类型 -- 全值匹配 SELECT * FROM users WHERE name = &amp;#39;John&amp;#39;; -- 前缀匹配（最左前缀） SELECT * FROM users WHERE name LIKE &amp;#39;Joh%&amp;#39;; -- 范围查询 SELECT * FROM users WHERE age BETWEEN 20 AND 30; -- 精确匹配左列 + 范围匹配右列 SELECT * FROM users WHERE email = &amp;#39;john@example.</description>
    </item>
    
  </channel>
</rss>
