当前位置: 首页 > news >正文

ALTER TABLE 之 定点变更(in-place alter)

定点变更算法可以提供优于慢速变更算法的诸多性能优势:
定点变更算法:
1,增加了表的可用性
ALTER TABLE操作使用定点变更算法时,其他用户稍后可以访问该表,因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁定该表。

对于要求7 * 24不停运行的应用程序系统,这种对表可用性的增强可以提高系统吞吐量。

使用定点变更算法时,数据库服务器锁定表的时间比慢速变更算法要短,因为数据库服务器:

  • 将表转换成新的定义肘,不必为表制作副本
  • 在ALERR TABLE 操作期间,不转换数据行
  • 当您以后更新或插入行时,在变更操作之后使用最新定义来定点变更物理列。数据库服务器对驻留在每页上的行进行转换。

2,需要的空间比慢速变更算法所需要的少
ALTER TABLE操作使用慢速变更算法时,数据库服务器将复制表以将该表转换为新定义。 ALTER TABLE操作要求空间至少为原始表大小的两倍与日志空间之和。
ALTER TABLE操作使用定点变更算法时,可以为非常大的表节省大量的空间。

3,在ALTER TABLE操作期间提高系统吞吐量
在定点变更操作期间,数据库服务器不会对表数据的任何更改进行日志记录。不对更改进行日志记录有以下优点:

  • 对于非常大的表,可以节省大量的日志空间
  • 变更操作不是长事务

数据库服务器何时使用定点变更算法:

对于您在ALTER TABLE语句的ADD、DROP 和MODIFY 子句中指定的特定操作类型,数据库服务器将使用定点变更算法。
变更表执行以下操作时,数据库服务器使用定点变更算法:

  • 除了使用ROWIDS 关键宇添加的列外,添加任何数据类型的列或者列的列表
  • 除了TEXT或BYTE以及使用ROWIDS 关键宇创建的列外,删除任何数据类型的列
  • 添加或删除使用CRCOLS 关键字创建的列
  • 修改满足以下条件的列:数据库服务器可以将其旧数据类型的所有可能值转换为新数据类型
  • 修改的列是分段存储表达式的一部分(如果转换后,值的更改不要求行从一个分段移到另一个分段)

注意:表包含扩展的数据类型、VARCHAR 数据类型、BOOLEAN 数据类型或智能大对象时,即使所变更的列包含内置数据类型,数据库服务器也不会使用定点变更算法。

使用定点变更算法的MODIFY操作和条件

源数据类型目标数据类型条件
SMALLINTINT、INT8、BIGINT、SMALLFLOAT或者FLOAT所有
SMALLINTDEC(p,s)p-s>=5
SMALLINTDEC§p>=5或者不是分片表达式的一部分
SMALLINTCHAR(n)n>=6且不是分片表达式的一部分
INT或SERIALINT8或者BIGINT所有
INT或SERIALDEC(p,s)p-s>=10
INT或SERIALDEC§p>=10或者不是分片表达式的一部分
INT或SERIALSMALLFLOAT不是分片表达式的一部分
INT或SERIALFLOAT所有
INT或SERIALCHAR(n)n>=11且不是分片表达式的一部分
SERIALSERIAL、SERIAL8或BIGSERIAL所有
DEC(p,s)SMALLINTp-s<5且(s=0或者不是分片表达式的一部分)
DEC(p,s)INT或SERIALp-s<10且(s=0或者不是分片表达式的一部分)
DEC(p,s)INT8、BIGINT、SERIAL8或BIGSERIALp-s<20且(s=0或者不是分片表达式的一部分)
DEC(p,s)DEC(p2,s2)p2-s2>=p-s且(s2>=s或者不是分片表达式的一部分)
DEC(p,s)DEC(p2)p2>=p或者不是分片表达式的一部分
DEC(p,s)SMALLFLOAT或FLOAT不是分片表达式的一部分
DEC(p,s)CHAR(n)n>=8且不是分片表达式的一部分
DEC§DEC(p2)p2>=p或者不是分片表达式的一部分
DEC§SMALLFLOAT或FLOAT不是分片表达式的一部分
DEC§CHAR(n)n>=8且不是分片表达式的一部分
SMALLFLOATDEC§或FLOAT不是分片表达式的一部分
SMALLFLOATCHAR(n)n>=8且不是分片表达式的一部分
FLOATDEC§或SMALLFLOAT不是分片表达式的一部分
FLOATCHAR(n)n>=8且不是分片表达式的一部分
CHAR(n)CHAR(n2)n2>=n或(不是分片表达式的一部分 且 非ANSI日志模式
增加长度CHAR(n)非ANSI日志模式
增加长度DEC或MONEY所有

附加信息:

  • DEC§是指将此数据类型作为浮点数据处理的非ANSI日志模式数据库
  • 在ANSI日志模式数据库中,DEC§缺省为DEC(p,0),并与DEC(p,s)使用相同的变更算法
  • 变更算法在不同版本中可能不同

不使用定点变更算法的变更操作:

在使用多个算法且值移动到其他分段时,数据库服务器不使用定点变更算法。

在以下情况中,数据库服务器不使用定点变更算法:

  • 正在使用的算法多于一种时
    如果ALTER TABLE 语句包含多个更改,那么数据库服务器在执行语句时将使用最低性能的算法。
  • 值必须移动到另一个分段时

变更作为索引的一部分的列:
如果变更的列是索引的一部分,那么表仍会定点变更,但此种情况下数据库服务器会重新建立一个或多个索引。如果不需耍重建索引,应在执行更改操作之前将其删除或禁用。执行这些步骤可以提高性能。

但是,如果修改的列是主键或外键,而且您想要保持这种约束,那么您必须再次在ALERR TABLE 语句中指定这些关键字,而且数据库服务器将重建索引。

即使对主键或外键列的ALERR TABLE操作重建了索引,数据库服务器仍将利用定点变更算法。定点变更算法在性能方面可以带来以下好处:

  • 无需为了将表转换成新定义而制作表的副本
  • 在变更操作期间不转换数据行
  • 并不重建对表的所有索引

相关文章:

ALTER TABLE 之 定点变更(in-place alter)

定点变更算法可以提供优于慢速变更算法的诸多性能优势&#xff1a; 定点变更算法&#xff1a; 1&#xff0c;增加了表的可用性 ALTER TABLE操作使用定点变更算法时&#xff0c;其他用户稍后可以访问该表&#xff0c;因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁…...

【RAG实践】Rerank,让大模型 RAG 更近一步

RAGRerank原理 上一篇【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人 我们介绍了什么是RAG&#xff0c;以及如何基于LLaMaIndex和Qwen1.5搭建基于本地知识库的问答机器人&#xff0c;原理图和步骤如下&#xff1a; 这里面主要包括包括三个基本步骤&#…...

私有化客服系统:在线客服搭建与部署的创新之路

随着互联网技术的飞速发展&#xff0c;企业与客户之间的沟通方式也在不断地演变。在这个信息爆炸的时代&#xff0c;一个高效、便捷、智能的在线客服系统成为了企业提升服务质量、增强客户满意度的重要工具。本文将详细介绍在线客服系统的构建、部署以及私有化客服的优势&#…...

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet: Vision Mamba UNet for Medical Image Segmentation VM-UNet&#xff1a;基于视觉Mamba UNet架构的医学图像分割 论文链接&#xff1a;http://arxiv.org/abs/2402.02491 代码链接&#xff1a;https://github.com/JCruan519/VM-UNet 1、摘要 文中利用状态空间模型SS…...

面向对象编程:在Python中的面向对象编程奥秘

面向对象编程在Python中的奥秘 在编程的世界里&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种非常重要的编程范式。它改变了我们思考问题和设计代码的方式。Python作为一种支持面向对象的语言&#xff0c;为我们提供…...

考研数学|零基础100分保底复习方案+资料分享

目标100分其实很好实现&#xff0c;只要你有决心&#xff0c;不需要去看任何人的学习技巧 其实基础差&#xff0c;你只要专攻基础就好了&#xff0c;现在的很多考研课程和资料真的很不照顾基础不好的同学&#xff0c;好像就默认你什么都会一样&#xff0c;但是还是有对于基础差…...

【MATLAB源码-第29期】基于matlab的MIMO,MISO,SIMO,SISO瑞利rayleigh信道容量对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. SISO&#xff08;单输入单输出&#xff09;&#xff1a; - SISO 是指在通信系统中&#xff0c;只有一个天线用于传输信号&#xff0c;也只有一个天线用于接收信号的情况。这是最简单的通信方式。 2. SIMO&#xff08;单…...

JRT高效率开发

得益于前期的基础投入&#xff0c;借助代码生成的加持&#xff0c;本来计划用一周实现质控物维护界面&#xff0c;实际用来四小时左右完成质控物维护主体&#xff0c;效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式&#xff0c;觉得Spring打包…...

Spring Boot 切面的一种的测试方法,java中级开发面试

void afterReturnName() { Assertions.assertEquals(studentController.getNameById(123L).getName(), "测试姓名Yz");} } 但往往切面中的逻辑并非这么简单&#xff0c;在实际的测试中其实我们也完成没有必要关心在切面中到底发生了什么&#xff08;发生了什么应该在…...

嵌入式自学路线-高薪路线(持续更新,欢迎关注)

1 入门&#xff1a;51STM32 主要学习内容中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等的工作原理。学习资源推荐视频&#xff1a;野火&#xff0c;正点原子书籍&#xff1a;野火&#xff0c;正点原子学习建议如果你以后的方向是驱动开发&#xff0c;这部分学…...

SpringMVC的运行流程

SpringMVC的运行流程可以概括为以下几个主要步骤&#xff1a; 用户发送请求&#xff1a; 用户通过浏览器或其他客户端发送HTTP请求到服务器。 前端控制器&#xff08;DispatcherServlet&#xff09;接收请求&#xff1a; SpringMVC的前端控制器&#xff08;通常是DispatcherSe…...

成绩分析 蓝桥杯 java

成绩分析 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 输入格式 输入的第一行包含一个整数 n&#xff0c;表示考试人数。 接下来 n 行&#xff0c;每行包含一…...

计算psnr ssim niqe fid mae lpips等指标的代码

以下代码仅供参考&#xff0c;路径处理最好自己改一下 # Author: Wu # Created: 2023/8/15 # module containing metrics functions # using package in https://github.com/chaofengc/IQA-PyTorch import torch from PIL import Image import numpy as np from piqa import P…...

OpenHarmony开发技术:【国际化】实例

国际化 如今越来的越多的应用都走向了海外&#xff0c;应用走向海外需要支持不同国家的语言&#xff0c;这就意味着应用资源文件需要支持不同语言环境下的显示。本节就介绍一下设备语言环境变更后&#xff0c;如何让应用支持多语言。 应用支持多语言 ArkUI开发框架对多语言的…...

c++子类和父类成员函数重名

子类和父类返回值参数相同&#xff0c;函数名相同&#xff0c;有virtual关键字&#xff0c;则由对象的类型决定调用哪个函数。子类和父类只要函数名相同&#xff0c;没有virtual关键字&#xff0c;则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了&#xff0c…...

《C++程序设计》阅读笔记【7-堆和拷贝构造函数】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;《C程序设计》阅读笔记 本文对应的PDF源文件请关注微信公众号程序员刘同学&#xff0c;回复C程序设计获取下载链接。 1 堆与拷贝构造函数1.1 概述1.2 分配堆对象1.3 拷贝构造函数1.3.1 默…...

洛谷 P1048 [NOIP2005 普及组] 采药

辰辰是个天资聪颖的孩子&#xff0c;他的梦想是成为世界上最伟大的医师。为此&#xff0c;他想拜附近最有威望的医师为师。医师为了判断他的资质&#xff0c;给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说&#xff1a;“孩子&#xff0c;这个山洞里有一些不同…...

VMware vSphere虚拟化基础管理平台

VMware简介 VMware介绍 官网&#xff1a;https://www.vmware.com/cn.html VMware公司成立于1998年&#xff0c;2003年存储厂商EMC以6.35亿美元收购了VMware&#xff1b;2015年10月&#xff0c;戴尔宣布以670亿美元收购EMC。VMware公司在2018年全年收入79.2亿美元。 VMware主…...

leetcode刷题-代码训练营-第7章-回溯算法1

回溯法模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtracking(路径&#xff0c;选择列表); // 递归回溯&#xff0c;撤销处理结果} }理解 从…...

三种常见webshell工具的流量特征分析

又来跟师傅们分享小技巧了&#xff0c;这次简单介绍一下三种常见的webshell流量分析&#xff0c;希望能对参加HW蓝队的师傅们有所帮助。 什么是webshell webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境&#xff0c;主要用于网站管理、服务器管理、…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL&#xff08;Software OpenGL&#xff09;‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式&#xff08;包括几何处理、光栅化、着色等&#xff09;&#xff0c;不依赖GPU硬件加速。这种模式通常性能较低&#xff0c;但兼容性极强&#xff0c;常用于不支持硬件加速…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...