第8页

  • 2024.09.11 | cuithink | 15次围观
    mysql之Log Buffer
    Log Buffer是存储要写入磁盘上的日志文件的数据的内存区域,日志缓冲区的大小由innodb_log_buffer_size变量决定的,默认是16M,日志缓冲区的内容定期刷新到磁盘。较大的日志缓冲区可以运行大型事务,而无需再事务提交之前将重做日志数据写入磁盘。因此,如果有更新、插入或者删除许多行的事务,则增加日志缓冲区的大小可以节省磁盘IO。可以通过 innodb_flush_log_at_trx_commit参数来控制如何将日志缓冲区的内容写入并刷新到磁盘,默认是11、...
  • 2024.08.11 | cuithink | 99次围观
    mysql之Change Buffer
    在 MySQL5.5 之前,叫插入缓冲(Insert Buffer),只针对 INSERT 做了优化;现在对 DELETE 和 UPDATE 也有效,叫做写缓冲(Change Buffer)。它是一种应用在非唯一普通索引页(non-unique secondary index page)不在缓冲池中,对页进行了写操作,并不会立刻将磁盘页加载到缓冲池,而仅仅记录缓冲变更(Buffer Changes),等未来数据被读取时,再将数据合并(Merge)恢复到缓冲池中的技术。写缓冲的...
  • 2024.08.11 | cuithink | 24次围观
    mysql之buffer pool
    在mysql的早期版本中,默认的存储引擎是Myisam,后来由Innobase Oy公司开发出innodb,作为插件引擎集成在mysql中,因其出色的性能在mysql5.5版本之后开始作为默认的存储引擎。Innodb是第一个完整支持ACID事务的mysql存储引擎,特点是行锁设计,支持MVCC,支持外键,提供一致性非锁定读,非常适合OLTP场景。innodb存储引擎架构包含内存结构和磁盘结构两大部分,整体架构图如下:In-Memory StructureBuffer Pool...
  • 2024.08.11 | cuithink | 35次围观
    mysql存储引擎初识
    存储引擎 在MYSQL中,我们看到的数据是以表的方式进行展示,但是实际在进行存储的时候以文件的方式进行存储,不同类型的表在磁盘中会有不同的组织和存储形式。 不同的数据文件在磁盘的不同组织形式。 通过执行show engines可以查看MYSQL中支持的存储引擎:MyISAM(3个文件) These tables have a small footprint. Table-level locking limits the performance in read/wri...
  • 2024.08.11 | cuithink | 15次围观
    mysql架构-客户端&服务端
    一般情况下,我们在进行MYSQL整体架构描述的时候分为三层,分别是客户端,服务端,存储引擎,如下图所示:1、客户端 客户端主要用于向MYSQL的服务端发送SQL语句,我们使用的cli,jdbc,可视化工具都可以称之为客户端2、服务端 MYSQL的服务端主要是对外提供MYSQL的服务,主要包含四个组件:连接器,分析器,优化器,执行器连接器 在MYSQL中,支持多种通信协议,主要有以下分类: (1)TCP/IP协议,任何编程语言在进行数据库连接的时候基本都是通过TCP协议...
  • 2024.08.11 | cuithink | 16次围观
    mysql索引(二)
    2、索引有哪些分类? 索引的分类要按照不同的角度去进行分类: 1、从数据结构的角度可以分为B+树索引、哈希索引、FULLTEXT索引、R-Tree索引(用于对GIS数据创建SPATIAL索引) 2、从物理存储角度可以分为聚簇索引和非聚簇索引 3、从逻辑角度可以分为主键索引、普通索引、唯一索引、组合索引3、聚簇索引与非聚簇索引 在MYSQL的innodb存储引擎中,数据在进行插入的时候必须要跟某一个索引列绑定在一起进行存储,如果有主键,那么选择主键,如果没有主键,那么...
  • 2024.08.11 | cuithink | 55次围观
    mysql索引(一)
    1、谈一下你对于mysql索引的理解?(为什么mysql要选择B+树来存储索引) mysql的索引选择B+树作为数据结构来进行存储,使用B+树的本质原因在于可以减少IO次数,提高查询的效率,简单点来说就是可以保证在树的高度不变的情况下可以存储更多的数据: 1、在MYSQL的数据库中,表的真实数据和索引数据都是存储在磁盘中,我们在进行数据读写的时候必然涉及到IO的问题,IO本质上来说是硬件方面的问题,但是我们在做索引设计的时候肯定要尽可能的考虑如何提高IO的效率,一般来说,...
  • 2024.07.11 | cuithink | 89次围观
    mysql事务(二)
    4、什么是隔离级别?有哪些隔离级别?     隔离级别是对事务并发控制的等级,描述了一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。数据库的事务隔离级别有四种,分别是读未提交、读已提交、可重复读、序列化,不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别。 各种隔离级别和数据库异常情况对应情况如下:隔离级别脏读不可重复  读幻读READ...
  • 2024.07.11 | cuithink | 28次围观
    mysql事务(一)
    1、什么是事务? 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。2、事务的四大特性原子性(Atomicity) 也就是我们刚才说的不可再分,也就意味着我们对数据库的一系列的操作,要么都是成功,要么都是失败,不可能出现部分成功或者部分失败的情况,以刚才提到的转账的场景为例,一个账户的余额减少,对应一个账户的增加,这两个一定是同时成功或者同时失...
  • 2024.07.11 | cuithink | 44次围观
    MVCC多版本并发控制(二)
    6、MVCC实现原理        mvcc的实现原理主要依赖于记录中的三个隐藏字段,undolog,read view来实现的。        隐藏字段        每行记录除了我们自定义的字段外,还有数据库隐式定义的DB_TRX_ID,DB_ROLL_PTR,DB_ROW_ID等字段        DB_TRX_...