sql新增字段注意事项
新增字段的类型、长度(精度)是否合适 解决方法:
跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。 以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。
l 新增字段的非空属性、默认值以及老数据问题。
新增字段如果是 NOT NULL 的,则一定要有默认值,否则老应用的 insert 代码可能报错。 表如果存在老数据,带上默认值的时候会导致 oracle 去订正老的数据行的新增列。 如果老数据非常多,表的并发访问高,很有可能导致大面积的阻塞等待以及产生大事务,甚至有可能 导致 undo 耗尽。倘若回滚,还会因为回滚产生的并发会话导致 load 飙升。
解决方法:先不带 not null 不带默认值加上列,再更改列默认值,再批量订正老数据,然后 再加上 not null 属性。 如果是大表,并且并发访问很高的表,则新增列不允许为 NOT NULL,以简化后面变更步 骤,降低风险!
l 新增字段导致依赖对象失效、sql 游标失效问题。
表的 DML 并发很高的时候,如果表上面还有依赖对象,新增字段会导致依赖对象失效。默 认其他 DML 会话会尝试去自动编译这个依赖对象, 此时很可能会出现大面积的 library cache pin。应用会话的连接时间会加长,进而导致出现后续应用报不能取得连接池错误。应用服 务器 load 由此飙升。 表新增字段也会导致跟该表有关的 SQL 的游标失效,如果 SQL 的并发很高(查询 SQL 或 者 DML SQL) 失效后 SQL 会重新解析, 此时也可能会出现大量的 library cache pin & library cache lock。
解决方法:选择在业务低峰期发布,同时在数据库级别开启 trigger 禁用客户端程序自动编 译功能,字段加完后再禁用该 trigger。
l 表的依赖对象是否要相应调整。
表上面的依赖对象如果有存储过程或触发器等,逻辑是否需要相应调整。
l 是否涉及到同步。
同步中的表需要两地都要变更。涉及到 erosa 的要更新一下数据字典。Erosa 需要重启一下。
l 是否要通知其他关联的部门。
如 DW, ASC 或 CRM 等等。 有些表很多部门都用,需要沟通约定时间一起变更。如果有同步方案,同步方案的变更也要考虑。
来源:https://wenku.baidu.com/view/df7719f259eef8c75ebfb307.html
sql新增字段注意事项的更多相关文章
- SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory')) ...
- Oracle 之 表新增字段后修改字段顺序
工作中遇到:在为一个表新增字段后,新增字段在最后,想调整新增字段的位置. 1.原始方法: --新建临时表以存储正确的顺序 create table A_2 as select (column1,col ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- dede新增字段调用方法
各位在使用{dede:channel }标签的时候,难免会遇到因为现在字段不能满足业务需求,需要新增的情况(具体怎么新增字段自行百度). 但是新增的字段通过DEDE的标签是不能直接使用的,现在博主介绍 ...
- 【转】SQL修改字段长度
语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...
- Magento 新增字段的值读写丢失原因
某实体新增字段handreturn_status,欲操作之: $order_info = Mage::getModel('sales/order')->load($order_id); //se ...
- Oracle/SQL 修改字段类型和长度
标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table tes ...
- Mybatis按SQL查询字段的顺序返回查询结果
在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...
- ASP.NET MVC5--为数据库新增字段(涉及数据库迁移技术)
Setting up Code First Migrations for Model Changes--为模型更改做数据库迁移. 1.打开资源管理器,在App_Data文件夹下,找到movies.md ...
随机推荐
- POJ1442:Black Box
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1442 用对顶堆维护第\(k\)小 ...
- HDOJ5441(图论中的并查集)
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ; ; ...
- Python:更改字典的key
思路:先删除原键值对,保存值,然后以新键插入字典 格式:dict[newkey] = dict.pop(key) d = {'a':1, 'aa':11} d['b'] = d.pop('a') d[ ...
- tomcat如何修改发布目录
tomcat免重启 tomcat访问的时候如何去掉项目名访问: 其中fts是您的项目名. 1.tomcat6.0:<Host></Host>间加了一句<Context p ...
- 第三课 go语言基础语法
http://www.runoob.com/go/go-basic-syntax.html 1 行分隔符 在 Go 程序中,一行代表一个语句结束.每个语句不需要像 C 家族中的其它语言一样以分号 ; ...
- win10系统的简单优化
1.关闭自带杀毒软件Windows Defender操作简要:在gpedit.msc 组策略-计算机管理——>管理模板——>windows组件——>windows defender ...
- 问题:C#发布的项目浏览时出现“Server Application Unavailable”错误;结果:Server Application Unavailable出现的原因及解决方案小结
Server Application Unavailable出现的原因及解决方案小结 作者: 字体:[增加 减小] 类型:转载 时间:2012-05-23 今天在服务器安装了个.net 4.0 fra ...
- Mysql ExcuteNonQuery
ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执 ...
- Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。
1.先将aspnet.scriptmanager.jquery.dl 复制到bin (网站根目录下的bin文件夹找不到,看看下面的图片中点击[显示所有文档]) 文件夹下. 2.在网站根目录下s ...
- MySQL的limit优化
mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,mysql明显性能下降 1.子查询优化法 先找出第一条数据,然后大 ...