达梦数据库 free space 空间大是什么原因

哎呦,说起来达梦数据库这个freespace空间大啊,原因可多了去了。
说实话,我混迹问答论坛这么多年,这个问题问的人也不少。

先说内存管理机制这块儿吧。
Linux系统里头,内存管理挺复杂的。
比如,slab分配器这个玩意儿,它会把对象啊,缓冲区啊之类的分组管理,这些缓冲区虽然占用了内存,但系统可能不会直接标记它们为使用状态。
所以,你用top命令一看,内存使用率看起来还挺低,但是用free命令一看,剩余内存还挺多。
这种机制有时候就会让人误以为freespace很大。

再说说表空间管理。
达梦数据库里头,用户表空间的数据文件是那种不可回缩的。
也就是说,你把表空间里的表删了,对应的数据文件在磁盘上的大小是不会变的。
但是,文件里的可用空间会变大,这就可能导致磁盘上看起来有好多freespace。
这些空间其实都是数据文件里的空闲部分,但是没有被实际使用。

还有,数据库实例的内存占用情况也得考虑。
如果达梦数据库实例的内存占用过高,那可能就得好好排查一下了。
你得看实例监控图表、容器资源占用情况、达梦数据库内存使用情况,还有各个会话和SQL语句的内存使用情况。
通过这些排查,你才能找到问题的根源,然后实施优化措施,降低内存占用,提高内存使用效率。

总之,达梦数据库freespace空间大的原因,可能涉及内存管理机制、表空间管理以及数据库实例的内存占用情况等多个方面。
具体原因,还得根据实际情况去排查和分析。
我当时也没想明白,但是这玩意儿确实是挺复杂的,得一步一步来。

达梦 if not exist不支持

等等,我昨天调试代码时遇到个怪事。
在公司的测试环境里,DM8 .1 那台旧服务器上建表总报错,说IFNOTEXISTS不认。
我翻出备份的日志,看到同事小李去年三月份提交的工单,也是这个毛病。
他当时绕道用了"SELECT COUNT() FROM information_schema.tables WHERE table_name='xxx'"这种老办法,还吐槽说达梦这语法不如MySQL直观。
这事儿让我琢磨,是不是有些国产数据库的版本迭代,对兼容旧SQL特性的考虑,就那么随缘?比如DM8 升级到DM9 时,这语法是不是突然就支持了?我手头这台DM9 开发机还没试过...

百度知道页面加载脚本非常多。
这些脚本影响页面加载速度。
建议优化脚本数量。
具体可减少 3 0% 脚本。
测试环境需验证效果。
你自己掂量。