2024-09-07 表结构的优化 表结构的优化 当库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。通俗的理解就是,删除数据时,mysql并不会回收被已删除数据的占据的存储空间以及索引位,而是空在那里,等待新的数据来弥补这个空缺。删除操作其实是假删除,空间并没有被释放。所以对于写比较频烦的表,要定期进行optimize,比如一个月一次。用optimizetable(表结构优化)重新压缩表格来回收空间和达到优化性能。 Read More
2024-09-06 内存泄露与内存溢出 内存泄漏memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 Read More
2024-09-01 索引和主键 索引的优点 索引的本质就是数据结构,索引往往以索引文件的形式存储在磁盘上。 主键索引、唯一索引、一般索引、hash索引(memory存储引擎支持)、聚簇索引、空间索引、全文索引(MyISAM支持)。 Read More
2024-08-30 为何使用B+树作为索引的数据结构 为何使用B+树作为索引的数据结构 1)二叉树与B/B+树具有相同的查找时间复杂度O(logn),所以时间复杂度不是选择B树的原因 2)二叉树未能很好的应用磁盘的预读功能(每次磁盘预读的数据都是无用的),会造成较多的磁盘I/O操作;B /B+树都很好的运用了磁盘的预读功能,磁盘页的大小与节点的大小一致(InnoDB为16kb),减少了磁盘的I/O操作。 Read More
2024-08-27 MySQL Cluster MySQL Cluster Mysql本身是不支持分布式的,所以在分布式系统中使用就得考虑分库分表,主备机制。分库分表就相当于是“切片”的概念;主备机制就相当于是“副本”的概念。 Read More
2024-08-25 分库分表带来的问题 分库分表带来的问题 1.事务一致性问题 分布式事务 当更新内容同时分布在不同库中,不可避免会带来跨库事务问题。跨分片事务也是分布式事务,没有简单的方案,一般可使用"XA协议"和"两阶段提交"处理。 Read More
2024-08-23 数据库分库分表 数据库分库分表 关系型数据库本身相对容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。阿里巴巴《Java开发手册》提出单表行数超过 500 万行或者单表容量超过 2GB,就推荐进行分库分表。 Read More
2024-08-21 InnoDB物理层七模块 InnoDB物理层七模块 InnoDB 的物理存储结构,指的是 MySQL 的数据是怎么存储在物理介质上的,由哪些磁盘文件组成。所谓逻辑存储结构,指的是这些数据是如何有结构地组织起来的。 Read More