淘宝面试题--大表建约束
来源:互联网 发布:南阳理工软件学院 编辑:程序博客网 时间:2024/05/16 17:17
在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。
想要解答此题,需要掌握一些基础知识,建唯一约束会自动创建索引。
create table test as select * from dba_objects;
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
用10046跟踪可以发现建索引语句:
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
CREATE UNIQUE INDEX "TEST"."UNI_TEST" on "TEST"."TEST"("OWNER","OBJECT_NAME",
"OBJECT_ID") NOPARALLEL
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.46 0.81 808 1086 1064 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.46 0.81 808 1087 1064 0
novalidate :启用约束,仅对新加入的数据强制执行约束,而不管表中的现有数据。
如果直接建唯一约束,会创建索引,创建索引会堵塞表的修改或被堵塞,会造成性能问题。
最佳实践:
CREATE UNIQUE INDEX UNI_TEST on TEST(OWNER,OBJECT_NAME,OBJECT_ID) online nologging;
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
想要解答此题,需要掌握一些基础知识,建唯一约束会自动创建索引。
create table test as select * from dba_objects;
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
用10046跟踪可以发现建索引语句:
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
CREATE UNIQUE INDEX "TEST"."UNI_TEST" on "TEST"."TEST"("OWNER","OBJECT_NAME",
"OBJECT_ID") NOPARALLEL
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.46 0.81 808 1086 1064 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.46 0.81 808 1087 1064 0
novalidate :启用约束,仅对新加入的数据强制执行约束,而不管表中的现有数据。
如果直接建唯一约束,会创建索引,创建索引会堵塞表的修改或被堵塞,会造成性能问题。
最佳实践:
CREATE UNIQUE INDEX UNI_TEST on TEST(OWNER,OBJECT_NAME,OBJECT_ID) online nologging;
alter table test add constraint uni_test unique (owner,object_name,object_id) novalidate;
0 0
- 淘宝面试题--大表建约束
- 淘宝面试题
- 淘宝面试题
- 淘宝面试题cacheline
- 淘宝面试题
- 淘宝的一道面试题
- 一道淘宝校园面试题
- 淘宝的一道面试题
- 淘宝研究院的面试题
- 一道淘宝校园面试题的思考
- 淘宝网前端开发面试题
- 淘宝面试题 放鸡蛋问题
- 淘宝UED前端开发面试题
- 淘宝面试题猜数字游戏
- 淘宝某部门的技术面试题
- 腾讯,创新工场,淘宝面试题
- 淘宝面试题之CountDownLatch应用
- day04 面试题Schema约束与DTD约束的区别
- Windows-userassist-keys
- cenots 7 samba服务器搭建
- Python模块之urllib和urllib2结合使用
- C++根据前序和中序构造二叉树
- 设置vim的键盘映射
- 淘宝面试题--大表建约束
- Hibernate映射
- 端午节的作文300字:难忘的端午节
- Maven组织的web项目读取WEB-INF下properties文件
- 顺序栈的简单操作
- HDU--2016
- Android问题集锦之四十:Android NDK: Could not find application project directory
- Java 8 详解之默认方法
- [LeetCode] Combination Sum III