mysql

  • 2024.09.11 | cuithink | 96次围观
    分库分表相关的问题
    (1)为什么要进行分库操作?分库指的是将存储在一个数据库中的数据拆分到多个数据库中进行存储。主要原因如下:1、性能提升:随着业务量的增长,单一数据库可能会面临性能瓶颈。分库可以将数据和请求分散到多个数据库上,从而提高系统的吞吐量和响应时间2、容量扩展:单一数据库可能收到硬件资源(磁盘,CPU,内存)的限制,分库可以将数据分散到多个数据库上,从而突破这些限制,实现容量的线性扩展3、可靠性提升:分库可以提高系统的可靠性。当某个数据库出现故障时,其他数据库仍然可以正常工作,从而保证...
  • 2024.09.11 | cuithink | 92次围观
    mysql之Tablespace结构
    从Innodb存储引擎的逻辑结构看,所有的数据都被逻辑地放在一个空间内,称之为表空间,表空间又由 段(segment),区(extent),页(page)组成。页在一些文档中有时候也称为块(block) ,如下图所示:段(segment)区(extent)页(page)表空间由段组成,常见的段有数据段、索引段、回滚段等。InnoDB存储引擎表是索引组织的,因此数据即索引,索引即数据。数据段即为B+树的叶子结点,索引段即为B+树的非索引结点。在InnoDB存储引擎中对段的管理都...
  • 2024.09.11 | cuithink | 87次围观
    mysql-磁盘上存储结构
    Innodb存储引擎的逻辑存储结构是将所有的数据都逻辑的放在了一个空间中,这个空间中的文件就是实际存在的物理文件(ibd文件)。默认情况下,一个表占用一个表空间,表空间可以看做是Innodb存储引擎逻辑结构的最高层,所有的数据都放在表空间中。表空间分为系统表空间,临时表空间,通用表空间,undo表空间和独立表空间。系统表空间 系统表空间可以对应文件系统上一个或多个实际的文件,默认情况下, InnoDB 会在数据目录下创建一个名为ibdata1,大小为 12M 的文件,这个文件...
  • 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的效率,一般来说,...