Mysql中delete数据后磁盘空间浅析

在MySQL中,使用DELETE语句删除数据后,磁盘上的文件不会立即缩小,因为MySQL通常不会重建文件并删除不再使用的空间。这是因为DELETE操作只标记已删除的数据为可重用,并不立即清除物理存储空间。
为了释放磁盘空间,你需要使用OPTIMIZE TABLE命令,它会重建表并删除未使用的空间。这适用于InnoDB和MyISAM表。

OPTIMIZE TABLE your_table_name;

但请注意,OPTIMIZE操作可能需要独占表访问权,且在大型表上执行时可能会消耗相当的处理时间和资源。

1、InnoDB引擎

这是MySQL常用的默认存储引擎。当你在InnoDB表上执行DELETE操作时,实际上数据并不会立即从磁盘上移除,而是被标记为已删除。InnoDB采用这种方式可以减少数据移动和磁盘碎片化,提升写入性能。被标记的数据所占的空间被标记为可复用,但磁盘空间不会立即回收,除非有后续的插入操作来重用这些空间,或者你采取额外的步骤如OPTIMIZE TABLE或ALTER TABLE来整理表和释放空间。因此,尽管逻辑上空间被视为可用,物理磁盘空间可能不会减少。

2、MyISAM引擎

在MyISAM表上执行DELETE操作后,虽然情况有所不同,表的数据文件不会自动收缩,但索引文件中的空间会立即释放给操作系统。不过,数据文件本身不会减小,除非你运行OPTIMIZE TABLE命令,该命令会重建表并释放不再使用的空间。

3、Mysql空间重用机制

在MySQL中,‌被删除的数据的磁盘空间在插入新数据时可能会被再次利用。‌这是因为DELETE操作只是将数据标记为删除,‌而不是真正地从数据文件中移除。‌当数据文件中有空间可供新数据插入时,‌MySQL会优先使用这些已被标记为删除的空间,‌而不是立即从磁盘上回收这些空间。‌这种机制允许数据库系统更有效地管理存储空间,‌避免频繁的磁盘碎片整理操作。‌
具体来说,‌当你在MySQL中使用DELETE语

单源最短路径算法是一种寻找从给定起点到图中其他所有节点最短路径的技术。在Python中,常见的单源最短路径算法有Dijkstra算法和Floyd-Warshall算法。 1. Dijkstra算法:用于带权重的无负边图,它是基于贪心策略,每次选择当前未访问节点中距离起点最近的一个进行扩展。Python中可以使用`heapq`库来实现优先队列,这是该算法的关键数据结构。 ```python from heapq import heappop, heappush def dijkstra(graph, start): distances = {node: float('infinity') for node in graph} distances[start] = 0 unvisited = [(0, start)] while unvisited: current_distance, current_node = heappop(unvisited) if current_distance > distances[current_node]: continue # 如果更新的距离比记录的还大,说明已经不再是更优解 for neighbor, weight in graph[current_node].items(): distance = current_distance + weight if distance < distances[neighbor]: distances[neighbor] = distance heappush(unvisited, (distance, neighbor)) return distances ``` 2. Floyd-Warshall算法:适用于任意带权图,通过动态规划求出所有节点对之间的最短路径。它在矩阵上进行操作,适合大规模图。 ```python def floyd_warshall(graph): n = len(graph) dist = [[graph[i][j] for j in range(n)] for i in range(n)] for k in range(n): for i in range(n): for j in range(n): if dist[i][k] != float('inf') and dist[k][j] != float('inf'): dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) return dist ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值