InnoDB基础

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM) 本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。 阅读详情

常用命令

  • 配置文件位置
    mysql --help | grep my.cnf
  • 数据库所在路径
    my.cnf中的datadir参数, 或在mysql中, 通过show variables like 'datadir';
  • show engines 显示mysql支持的引擎;
  • 通过unix域套接字来连接mysql
// .sock文件路径
show variables like 'socket';
// -S /xxx  练级
mysql -uxxx -S /tmp/mysql.sock
  • 异步IO(AIO)
    SHOW ENGINE INNODB STATUS,
  • 线程列表 show processlist
  • 删除表
    DELETE FROM tbl [where]; 慢, 返回个数;
    TRUNCATE TABLE tbl; 快, 返回0;
  • 查看表的行, 内存, 索引大小
SELECT table_name, table_rows, data_length FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbname';
  • INSERT INTO tbl(x,x,x) SELECT x,x,x FROM ...
  • 显示索引
show index from tbl;
show create table tbl;

innodb相关介绍

  • 主要面向OLTP应用; (MyISAM, 不支持事务, 表锁设计, 全文index, 适合OLAP应用), (Memory, HEAP存储引擎, 数据放于内存中, 适合于临时数据表, 速度快)
  • MVCC实现高并发;
  • 4中隔离级别, 默认REPEATALBE READ, 即事务中, 重复执行一个SQL其结果是一样的, 不会受其它SQL的影响;
  • 采用聚集(clustered)方式, 主键按顺序存放, 没有制定主键, 则自动生成6字节的ROWID列作为主键;

体系架构

线程

  • master 线程
  • 4 Read 线程, 4 Write线程,
  • 1 insert buffer线程, 1 log线程
  • purge线程gmail
    回收无用的undo log页, innodb_purge_threads设置purge线程的数量, 独立的线程减轻mster线程的压力;

内存

缓冲池
  • innodb_buffer_pool_size为缓冲池大小
  • 包括数据页, 索引页, 插入缓冲, 自适应哈希索引, lock info等; 还有其它缓冲如redo log 缓冲;
  • innodb_buffer_pool_instances可以设置缓冲池数量;
  • information_schema表查看缓冲池情况
SELECT POOL_ID, POOL_SIZE, FREE_BUFFERS, DATABASE_PAGES FROM INNFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
缓冲池管理算法LRU, Free List, Flush List
  • 页默认大小16KB;
  • LRU Latest Recent Used, 最近最少使用, 最频繁使用的在LRU前端, 最少使用的在链表尾部, 当缓冲池Free List没有空间时, 释放LRU的尾部页, 数据放入链表头;
  • Midpoint机制
    1. Innodb对LRU算法做了优化, 通过innodb_old_blocks_pct设置midpoint点, 新的页不是放到尾部, 而是midpoint位置, midpoint前面为new列表, 后面为old列表, 理解为new为活跃数据, old为非活跃数据;
    2. 该算法是为了防止某些情况下, 新页数据被频繁刷出, 影响性能, 如扫描操作, 一般都是临时读取数据, 如果页放在链表头, 可能会将所有的热点数据刷出LRU链表;
  • 减少innodb_old_blocks_pct可以减少热点数据被刷出的频率;
  • pages made young
    页从old加入到new时, 即转变为热门数据;
    通过表查询:
SELECT POOL_ID, HIT_RATE, PAGES_MADE_YOUNG, PAGES_NOT_MADE_YOUNG FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
Flush List
  • LRU中修改过的页即脏页dirty page, 内存数据功能磁盘数据不一致, 这是需要通过checkpoint机制将脏页刷新回磁盘;
  • Flush List即脏页列表, 脏页即存在与LRU与存在与Flush List
  • 查看LRU中的脏页:
SELECT TABLE_NAME, SPACE, PAGE_NUMBER, PAGE_TYPE FROM INNODB_BUFFER_PAGE_LRU WHERE OLDEST_MODIFICATION>0;
重做日志缓冲
  • redo log先放入这个缓冲, 再fsync到磁盘;
  • innodb_log_buffer_size, 默认8MB;
  • fsync时机:
    1. master线程每秒执行一次;
    2. COMMIT操作;
    3. innodb_log_buffer_size空间小于1/2;
checkpoint机制

将脏页刷新回磁盘.

  • sharp checkpoint即服务器关机时将所有的脏页刷新回磁盘
  • fuzzy checkpoint 运行时只刷新一部分脏页;
  • fuzzy checkpoint时机:
    1. Master Tread Checkpoint
      master线程每1或10秒刷新回一部分脏页;
    2. FLUSH_LRU_LIST Checkpoint
      innodb_lru_scan_depth表示LRU列表中可用页的数量, 默认1024, 如果少于这个值, 则会启动checkpoint;
    3. Async/Sync Flush Checkpoint
      若redo_lsn-checkpoint_lsn达到总redo日志大小一定比例时, 就会启动;
    4. DIrty Page too much Checkpoint
      缓冲池中脏页数量占据75%时启动;

关键特性

插入缓冲(insert buffer / change buffer)
  • innodb主键是行唯一标识符, 聚集索引的插入一般是顺序的, 不需要随机读取, 速度非常快;
  • 如果表中有非唯一的辅助索引, 则此刻插入可能需要随机读取非聚集索引页, 所以这里用了insert buffer来解决这个问题;
  • 对于非聚集索引或非唯一索引, 其插入或更新操作, 不是每次都直接插入到索引页中, 而是判断插入的非聚集索引页是否在缓冲池中, 在的话则直接插入, 没有则先放到一个insert buffer中. 然后再以一定的频率将insert buffer与辅助索引页的子节点的meige操作.
  • change buffer是insert buffer的升级, 包括insert buffer, delete buffer, pruge buffer;
double write
  • partial page write
    数据库在写入某页到表时发生宕机, 且只写了一半, 此时可能无法通过redo log来恢复, 这里就需要用到doble write来解决;

  • doublewirte buffer与物理磁盘共享表空间128页空间(2个区extent)
    对缓冲池的脏页进行刷新, 不是直接写磁盘, 而是通过memcpy复制到内存的doublewrite buffer, 在分两次, 每次1MB(64个页)顺序的写入到共享表空间的物理磁盘上, 然后马上调用fsync进行磁盘同步;

  • SHOW GLOBAL STATUS LIKE 'innodb_dblwr%';
    其中, innodb_dblwr_written实际写入的页数, innodb_dblwr_writes为写入的次数, 正常两者为64:1, 如果远小于64:1, 则说明写入压力不大;

启动, 关闭, 恢复

关闭

参数innodb_fast_shutdown:可以设为0,1,2;

  • innodb_fast_shutdown=0
    关闭时, 完成所有的full purge 和 merge insert buffer, 并将所有的脏页刷新回磁盘; 数据量大时, 可能非常耗时, 可以先将参数设置为2, 在服务器下次启动时会执行恢复;
  • innodb_fast_shutdown=1
    默认配置, 不完成full purge 和 merge insert buffer, 但要将所有的脏页刷新回磁盘;
  • innodb_fast_shutdown=1
    不完成full purge 和 merge insert buffer, 也不刷新脏页回磁盘; 只将日志文件写回日志文件, 保证事务不会丢失, 下次启动时完成恢复;
恢复

参数innodb_force_recovery

  • innodb_force_recovery=0, 默认为0, 启动时执行所有恢复;

    有时不需要服务器自己执行恢复, 因为很慢, 我们可以自定导数据到新表;

  • innodb_force_recovery=1, SRV_FORCE_IGNORE_CORRUPT, 忽略检查的corrupt页;

  • innodb_force_recovery=2, SRV_FORCE_NO_BACKGROUND,阻止master thread运行(会执行full purge, 导致crash);
  • innodb_force_recovery=3, SRV_FORCE_NO_TRX_UNDO, 不进行事务回滚;
  • innodb_force_recovery=4, SRV_FORCE_NO_IBUF_MERGE, 不进行插入缓冲的合并操作;
  • innodb_force_recovery=5, SRV_FORCE_NO_UNDO_LOG_SCAN, 不查看撤销日志, 会将为提交的事务作为已提交;
  • innodb_force_recovery=6, SRV_FORCE_NO_LOG_REDO, 不进行前滚操作;

慢查询

相关参数
  • 开启: log_slow_queries
  • 慢查询阈值时间(s): long_query_time
  • 文件: slow_query_log_file
mysqldumpslow
  • 执行时间最长的10条SQL语句
mysqldumpslow -s al -n 10 xxx.log
慢查询记录到表中
  • 参数log_output默认为FILE, 可以配置为TABLE;
  • 查询slow_log表:
SELECT * FROM mysql.slow_log;

分区

procedure

DELIMITER $$
CREATE PROCEDURE()
BEGIN
	DECLARE dt DATE;
	DECLARE ds DATE;
	DECLARE de DATE;
	DECLARE dInt INT;
	SET ds = DATE(20170310);
	SET de = DATE(20170320);
	SET dt = ds;
	WHERE dt <=de DO
		SET dInt = YEAR(dt);
		Call trans_data('alph','dInt');  # 调用过程
		..
		SET dt = DATE_ADD(dt, INTERVAL | DAY);
	END WHILE;
END; $$
DELIMITER ; 

4种隔离级别

  • READ_UNCOMMITTED
    可以读取到其它事务未提交的修改;
  • READ_COMMITTED
    在同一事务中, 能读取事务中已经修改过的数据(隔离性Isolation没有满足), 但未提交前, 修改对其它事务不可见;
  • REPEATABLE_READ
    只会读取到已提交的结果, 同一事务同一SQL语句查询的结果永远一致(满足Isolation特性);
  • SERIALIZABLE
    与REPEATABLE类似, 如果autocommit=0, 则SELECT会自动转化为SELECT .... LOCK IN SHARE MODE;, 会对SELECT加上S锁, 造成阻塞;

锁

MyISAM

表级锁;

InnoDB

行级锁, 表级锁

  • latch
    底层锁, 如mutex, rwlock, 轻量级, 时间短;
  • lock
    事务级锁, 一般在COMMIT, ROLLBACK后释放, 有死锁机制;

innodb lock类型

  • S Lock, 共享锁, 用于读;
  • X Lock, 排它锁, 用于写;

表级锁(意向锁)

  • IS Lock, 事务要获得一张表中某几行的共享锁;
  • IX Lock, 事务要获得一张表中某几行的排它锁;

一致性锁定读

innodb默认隔离级别为REPEATABLE READ, 为一致性非锁定读, 所以某些情况下需要用户通过主动枷锁的方式来保证逻辑一致性, 实现一致性锁定读;

  • 加X Lock
SELECT ... FOR UPDATE; 
  • 加S Lock
SELECT ... LOCK IN SHARE MODE

幻读Phantom Problem

在同一事务下, 连续执行两次同样的SQL语句, 可能导致不同的结果. 第二个SQL可能返回与第一个SQL不存在的行;

这个特效使得其不满足I特性; mysql通过next-key lock来解决; 如数据中有id=1,2,5, 执行

SELECT * FROM t WHERE id>2 FOR UPDATE;

这里id>2只有5, 而由于next-key lock存在, 这里锁住的不仅仅时id=5, 而是id>2, 所以如果此时执行INSERT INTO t id=4是会被阻塞的;

锁的问题

  1. 脏数据
    事务对缓冲池进行修改却还没有提交, 如果另一个事务读到了该未提交的数据, 即违背了隔离性I, 就是读到了脏数据;
  2. 幻读(不可重复读)
    一个事务中两次相同的读取结果不一样, 其与脏读的区别是, 幻读读到是另一个已经提交了的事务的修改;
  3. 更新丢失
    两个事务同时更新, 一个被另一个覆盖; 可以通过X Lock解决;

锁是的事务阻塞, 其阻塞时间为参数innodb_lock_wait_timeout

事务

  • innodb的事务满足ACID特性: Automicity, Consistency, Isolation, Durability
  • 事务是数据库从一种状态转变到另一种状态, 提交事务时, 要么所有的修改都已提交, 要么所有的都没保存;
  • Isolation: 针对并发, 即一个事务在提交前其修改对其它事务是不可见的;
  • Durability: 锁一旦提交, 其修改是永久的, 即使发生宕机, 也能恢复;

事务启动

  • BEGIN
  • START TRANSACTION
  • SET AUTOCOMMIT=0

隐式提交SQL

  • DML: ALTER TABLE, CREATE TABLE等;
  • 管理语句: ANALYZE TABLE, OPTIMIZE TABLE等;

事务实现

隔离性Isolation

通过锁来实现

持久性Durability
  • 重做日志分为: redo log buffer, redo log file, 重做日志需要先写到缓冲中, 在fsync到磁盘;
  • Force log at commit
    当事务提交时, 必须将事务的所有日志写到重做日志, 进行持久化;
  • undo log
    帮助事务回滚, 以及MVCC功能;
innnodb_flush_log_at_trx_commit

有三个值可选, 0, 1, 2. 默认为1;

  • 0: commit提交时. 不执行fsync, 有master线程每个1s执行;
  • 1: 默认, 事务提交时, 执行fsync;
  • 2: commit时, 写入文件系统缓冲, 不执行fsync;
LSN(Log Sequence Number) 日志序列号

show engine innodb status里有如下值:

Log
Log Sequence Number 当前redo log buffer的LSN
Log Flushed up to 刷新到重做日志文件的LSN
Last Checkpoint at 磁盘的LSN

由于默认autocommit=1, 所以对于大量的insert操作, 应该放入一个事务中, 同意commit, 减少fsync次数;

事务类型

扁平事务Flat Transaction
  • BEGIN WORK开始, COMMIT WORK 或 RollBack WORK结束;
  • 保存点: SAVEPOINT, 可以回滚到的指定的保存点;
  • ROLLBACK WORK: 2, 回滚到保存点2, 此时事务仍然活跃, 由Rollback work来结束;
链事务Chained Transaction

SAVEPOINT是易失的, 没有完成COMMIT, 当系统崩溃时, 数据会消失. 事务链, 就是阶段性的执行COMMIT操作, 其事务提交与开始一个新的事务是原子操作, 同时能够保留上一个事务的环境.

嵌套事务Nested Transaction

嵌套事务中, 事务的回滚操作会将子事务一同回滚. 子事务可以提交也可以回滚, 但提交操作只会在父事务提交时才会真正执行;

undo log

作用:

  • ROLLBACK回滚
    undo log并不是将数据库物理的恢复, 而是针对某个事务执行其逻辑恢复. 因为并发, 执行回滚后, 数据库的物理数据与事务开始时会不一样;

  • MVCC
    如果某一事务读取某一行时发现, 已被其它事务占用, 可以通过undo读取到其占用前的数据, 以实现MVCC;
    同理事务提交后, 并不能直接删除undo log, 因为可能还有其它的事务需要, 所以会将undo log放到一个链表中, 有purge线程执行最终的删除;
    show engine innodb status命令下的History List Length显示的是undo log 的数量;

insert undo log

这种类型的undo log对其它事务是隔离的, 因此可以直接删除, 不用等purge来删除;

update undo log

update, delete操作参数的undo log, 由于需要提供MVCC机制, 所以需要等purge操作;
delete操作也不会立刻删除, 而是放入undo log链表, 等purge来完成最终的删除;

purge线程

  • 完成update, delete的最终操作, 只有等该行不被其它事务引用时才会执行;
  • 当引擎压力大时, History List Length可能越来越长, 可以通过innodb_max_purge_lag来控制长度;
  • innodb_max_purge_lag_delay, 控制每次的清理时长;
[QMT量化交易小白入门]-七十三、主力资金动向:板块与个股资金流数据API(量化python代码解析) 本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 阅读详情

相关推荐

UA-DETRAC数据集转YOLO格式

UA-DETRAC转YOLO

lafsca5的博客 9107

mysql 强制InnoDB恢复 innodb_force_recovery详解

mysql5.7 强制innoDB恢复 innodb_force_recovery mysql无法启动 数据库恢复

yangydq的专栏 1万+

告别环境配置烦恼:Docker容器化一站式搭建Zephyr RTOS开发环境

本文详细介绍了如何使用Docker容器化技术一站式搭建Zephyr RTOS开发环境,彻底解决环境配置不一致、依赖冲突等难题。通过预构建镜像、数据卷挂载和实战编译示例,帮助开发者快速获得隔离、一致且可复现的嵌入式开发环境,大幅提升开发效率和团队协作体验。

n8m7b6v5c4的博客 189

MySQL恢复 利用innodb_force_recovery修复MySQL数据页损坏

  现象:启动MySQL服务时报1067错误,服务无法启动。   查看xxx.err错误日志发现有数据页损坏信息:     InnoDB:Databasepagecorruptionondiskorafailed     InnoDB:filereadofpage200.   出现上述现象是由于突然断电、强制关机、强制杀死MySQL进程等操作所导致的。  ...

一个标题 5569

秋叶ComfyUI整合包:一键部署AI绘画工作流,解决环境配置难题

在AI绘画和生成式AI领域,Stable Diffusion作为开源的扩散模型,为图像生成提供了强大的技术基础。其核心原理是通过学习数据分布,对随机噪声进行逐步去噪,最终生成高质量的图像。这项技术的价值在于极大地降低了专业图像创作的门槛,并推动了AIGC(人工智能生成内容)在艺术设计、游戏开发、广告营销等场景的广泛应用。然而,其典型工作流实现工具ComfyUI,在实际部署中常因Python环境、PyTorch版本与CUDA驱动之间的复杂依赖关系而受阻,尤其是面对NVIDIA 30系、40系及未来50系等不同

优快云头条 668

ANSYS Maxwell:创建即用型 3D 轴向磁通电机模型

Magnet Length” 是磁体的径向长度。“Magnet Thickness” 是磁体的轴向长度。为了对 AFM 进行更详细的分析,用户需要在 ANSYS Maxwell 中运行 3D FEA 分析。对于 2D 模型,它们类似于 MotorCAD 中的模型,后者对等效的直线电机进行建模。单击“确定”后,将创建一个 3D Maxwell 模型。“长度”是转子铁的轴向长度。然后需要定义定子的“磁芯”尺寸和材料。“长度”是定子铁芯的轴向长度。“转子”# 的极数必须与“定子”中定义的磁极相同。

jkh920184196的博客 1930

MySQL的参数 innodb_force_recovery 详解

参数名称作用范围:全局变量默认值:0(正常启动模式)取值范围:0-6动态修改:否(必须写入配置文件并重启MySQL)

文牧之的博客 2233

Orin 10G PHY网络分析

由于调试用的10G PHY,所以整理下分析过程; 1.从Orin devkit 丝印来看RJ45 对应J17 通过搜索 MGBE_PHY_A_N 找到连接的10G PHY, 原理图上标明了MDIO address 为0x0, 使用的PHY 芯片为 Marvel 的AQR113C, 主要特性: 架构: 关键特征: MDC 连接了GPIO26_XFI0_MDC; MDIO 连接了GPIO25_XFI0_MDIO; 通过pinmux_config映射表也可以..

乐于分享 5650

详解MySQL修复innodb:innodb_force_recovery

是MySQL中的一个参数,可以设置为不同的整数值。它用于启动InnoDB存储引擎的"紧急恢复模式",当InnoDB遇到严重的问题时,通过设置不同的值来尝试修复数据。的取值范围是0到6,取值越大,尝试修复的方式越严格。但是需要注意的是,设置一个过高的值可能会导致数据丢失。

牛肉胡辣汤 2164

SAP 采购员参数及权限配置

若要控制采购员的参数缺省值或者权限,可以通过以下方式实现: 1、定义采购员缺省值(EVO) 路径:后台----物料管理---采购---环境数据---定义采购员的缺省值 点击图标,显示如下,查看参数配置ID: 查询到配置“定义采购员的缺省值”是通过ID “EVO”来配置的。进入页面建立配置: 按照需要配置新条目: 事务代码SU01进入用户配置页面,在用户“参数”页面配置前面设...

willieyuan的博客 7600

机器人控制算法九之 位姿描述与空间变换

机器人控制算法九之 位姿描述与空间变换

yohnyang的博客 1031

Mysql在Centos下,InnoDB数据损坏导致服务不可用

早上发现公司的测试环境的mysql又又又挂了,上面一百多个库,测试同事要炸锅了。之前都是备份一下,然后恢复临时解决问题,今天打算换个思路来处理这个问题,先检查一下进程是否存在。扫描过后,通过检查输出记录,发现好几张表的索引文件损坏了,关闭innodb_force_recovery参数,重启mysql,发现服务可以正常启动了。先尝试配置1,然后启动mysql,启动这个后,数据库会锁定插入和修改等操作,只能读。先打开配置中的innodb_force_recovery,这个配置。执行后,倒是没影响程序。

qq_16557863的博客 1153

机器人多学科仿真软件:Webots_(19).Webots的插件与扩展开发

通过上述步骤,您可以开发和使用Webots的插件、扩展和接口,以增强其功能和灵活性。

kkchenjj的博客 923

InnoDB性能调优基础

本文的原文地址在此:http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/,以下是译文。

zhu19774279的专栏 1211

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql innodb 备份_Xtrabackup基础--mysql innodb备份

Xtrabackup一、 Xtrabackup的基础知识InnoDB 有个商业的InnoDB Hotbackup,可以对InnoDB引擎的表实现在线热备。而 percona出品的Xtrabackup,是InnoDB Hotbackup的一个开源替代品,可以在线对InnoDB/XtraDB引擎的表进行物理备份。mysqldump支持在线备份,不过是逻辑备份,效率比较差。xtrabackup是开...

weixin_42306938的博客 520

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

InnoDB基础篇(3)-InnoDB表的创建与基本操作

本文介绍了如何创建MySQL中的InnoDB表,并且展示了一些基本的操作,如插入、查询、更新和删除数据。同时也提到了如何给表中的列添加索引以提高查询效率。InnoDB是MySQL中一个强大的存储引擎,它支持事务,具有高性能和稳定性。使用InnoDB表,可以轻松管理和操作数据库中的数据。希望本文对于初学者理解InnoDB表的创建与基本操作有所帮助。

俞兆鹏的博客 1065

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL innoDB底层基础原理总结

MySQL innoDB底层基础原理 前言:由于正在准备之后的实习面试,故总结了一部分golang语言基础的问题,回答全为自己组织的语言,若有错各位大佬可及时指出,大家共同进步,谢谢。 1.innoDB索引实现原理 innoDB存储引擎主要支持B+Tree索引、哈希索引、全文索引,其中最常用最有效的则是利用B+Tree结构实现的B+Tree索引,而为何要采用B+Tree作为索引结构呢,则是因为在数据库存取性能评估上,磁盘I/O是目前最大瓶颈,而磁盘I/O速率属于硬件设计范畴。系统层面想要提高存取效率只能尽量

筱2402的博客 2211

InnoDB空间文件结构基础内容

在这篇文章中,我介绍了记录InnoDB内部数据结构的项目–,该项目提供了这篇文章所用的图解。InnoDB的数据存储模块使用的“space”(空间),在MySQL上下文中通常被称之为“tablespaces”(表空间),有些时候InnoDB本身称之为”file spaces“(文件空间)。一个”space“(空间)可能由多个操作系统级别的(比如 ibdata1,ibdata2,等等)实际的文件组成,但是它是一个独立的逻辑文件–多个物理文件被视为物理上连接在一起。

konmor的博客 289

MYSQL基础:参数调优:1:InnoDB调优参数基本信息一览

InnoDB、MyISAM 都是MySQL存储引擎,在InnoDB存储引擎中,page是最小单位,然后是extent(区),段(segment)和tablespace,和Oracle在名称上较为相似。

知行合一 止于至善 3710

【MySQL 】MySQL innoDB底层基础原理总结

由于正在准备之后的实习面试,故总结了一部分MYSQL innoDB基础的问题,回答全为自己组织的语言,若有错各位大佬可及时指出,大家共同进步,谢谢。innoDB存储引擎主要支持B+Tree索引、哈希索引、全文索引,其中最常用最有效的则是利用B+Tree结构实现的B+Tree索引,而为何要采用B+Tree作为索引结构呢,则是因为在数据库存取性能评估上,磁盘I/O是目前最大瓶颈,而磁盘I/O速率属于硬件设计范畴。系统层面想要提高存取效率只能尽量减少磁盘I/O,所以由于磁盘特性,Tree可以将节点大小初始化为磁盘

DreamSun的博客 3147

mysql innodb 源码_MySQL列:innodb的源代码的分析的基础数据结构

在过去的一年中的数据库相关的源代码分析。前段时间分析levelDB实施和BeansDB实现,数据库网络分析这两篇文章非常多。他们也比较深比较分析,所以没有必要重复很多劳力。MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解。我一般分析源代码的时候都是从基础的数据结构和算法逐步往上分析。遇到不明确的地方,自己依照源代码又一次输入一遍并做...

weixin_39639286的博客 400

mysql 基础 show innodb status

show  innodb  status  总结: ===================================== 120809 17:04:58 INNODB MONITOR OUTPUT ===================================== Per second averages calculated from the last 23 seco

回南山种豆的专栏 4007

InnoDB存储引擎基础

分布式存储中指明了存储的下层就是存储引擎,所以就拿一个实际的存储引擎进行学习了解,存储引擎究竟是如何操作使用的。下面对InnoDB存储引擎做一个简单的总结。 1、什么是InnoDB存储引擎,在此存储引擎上支撑的什么样的数据库 InnoDB目前支持上层的数据库为MySQL,目前支持MySQL的相关特性由:ACID的事务,行锁,MVCC版本控制,外键,非锁定读 2、关于Innodb的源码中基本结构 i...

Zuoerfeng 265

MySQL列:innodb的源代码的分析的基础数据结构

在过去的一年中的数据库相关的源代码分析。前段时间分析levelDB实施和BeansDB实现,数据库网络分析这两篇文章非常多。他们也比较深比较分析,所以没有必要重复很多劳力。MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解。我一般分析源代码的时候都是从基础的数据结构和算法逐步往上分析。遇到不明确的地方,自己依照源代码...

aofan9566的博客 244

InnoDB(4,java基础面试

表空间 段 区 页 行 表 表就是关于特定实体的数据集合,是关系型数据库的核心 索引组织表 在InnoDB存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 所以在InnoDB存储的引擎表中,都必须有个主键(primary key),如果在创建表时没有显示地定义主键,则InnoDB存储引擎会按照下面的方式选择或者创建主键 首先判断表中是否有非空的唯一索引,即unique key not null,如果有,那么该列就会变为主键(rowid) ...

m0_64384202的博客 214

MySQL优化之InnoDB基础原理

MySQL优化之InnoDB基础原理 一、事务隔离级别 理解各种事务隔离级别的优缺点 (一)四种事务隔离级别总结 (二)四种事务隔离级别下,去重现脏读现象、不可重复读现象、幻读现象 1、在RU隔离级别下,会出现脏读现象 2、在RC隔离级别下,会出现不可重复读现 3、在RR隔离级别下,理论上会幻读现象,但是innodb存储引擎已经利用MVCC机制解决了RR下的幻读问题。 二、UNDO和REDO日志 (一)UNDO日志 1、undo日志是为了实现事务的原子性,以及实现了多版本

wangli1281的博客 199
上一篇: multiprocessing.Pool
下一篇: python logging + yaml
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值