解决方案[1]
找到sql server 2019 的安装目录,如:X:\Microsoft Sql Server。其中,X:\是根目录。
在sql server 2019 的安装目录X:\Microsoft Sql Server下,找到路径:
MSSQL15.MSSQLSERVER\Log\PolyBase\dump
删除除.log文件外的所有文件。
这些文件是PolyBase 相关服务产生的日志,单个将近500MB。
停止PolyBase 相关服务
1.PolyBase用于Sql Server 与外部数据源的通信 。所以,不做分布式开发,不需要启动PolyBase相关服务。
2. Sql Server 服务是Sql Server Polybase 数据移动服务(用于管理 SQL Server 和外部数据源之间的通信和数据传输) 和Sql Server Polybase 引擎服务(用于创建、协调和执行针对外部数据源的并行查询计划)的依赖项,这两个服务不停止,Sql Server服务将无法停止。
3. Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务如果设为自动,则运行后,将无法通过手动停止。
4. 如果要阻止PolyBase 服务写入日志,应当停止Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务.
5. 如果Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务已设为自动,则应先分别将其属性设为手动,然后重启计算机。
6. 在安装Sql Server时,应当首先将Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务的属性设为手动。
7. 如果在安装Sql Server时,首先将Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务的属性默认为自动,则由于无法停止Sql Server服务,将导致后续组件如R等无法安装。
8. 如果出现上述相关组件无法安装的问题,首先要将Sql Server Polybase 数据移动服务 和Sql Server Polybase 引擎服务的属性设为手动,重启计算机后,通过安装程序进行修复安装。
如需长时间运行PolyBase相关服务
在安装Sql Server前,最好专门为日志文件预留单独的分区。安装时,仔细阅读安装向导的提示,为日志文件指定单独的存储分区。这样,日志写满后,将自行覆盖,而不必担心影响应用程序运行的效率和性能。
以MySQL 8.0 来说,通过查看 8.0 的官方文档得知,8.0 的临时表空间分为会话临时表空间和全局临时表空间,会话临时表空间存储用户创建的临时表和当 InnoDB 配置为磁盘内部临时表的存储引擎时由优化器创建的内部临时表,当会话断开连接时,其临时表空间将被截断并释放回池中;也就是说,在 8.0 中有一个专门的会话临时表空间,当会话被杀掉后,可以回收磁盘空间;而原来的 ibtmp1 是现在的全局临时表空间,存放的是对用户创建的临时表进行更改的回滚段,在 5.7 中 ibtmp1 存放的是用户创建的临时表和磁盘内部临时表;
也就是在 8.0 和 5.7 中 ibtmp1 的用途发生了变化,5.7 版本临时表的数据存放在 ibtmp1 中,在 8.0 版本中临时表的数据存放在会话临时表空间,如果临时表发生更改,更改的 undo 数据存放在 ibtmp1 中;
实验验证:将之前的查询结果保存成临时表,对应会话是 45 号,通过查看对应字典表,可知 45 号会话使用了 temp_8.ibt 这个表空间,通过把查询保存成临时表,可以用到会话临时表空间,如下图:
下一步杀掉 45 号会话,发现 temp_8.ibt 空间释放了,变为了初始大小,状态为非活动的,证明在 mysql8.0 中可以通过杀掉会话来释放临时表空间。
总结:在 mysql5.7 时,杀掉会话,临时表会释放,但是仅仅是在 ibtmp 文件里标记一下,空间是不会释放回 *** 作系统的。如果要释放空间,需要重启数据库;在 mysql8.0 中可以通过杀掉会话来释放临时表空间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)