Oracle 删除分区带来索引失效

hao123yao 2013-04-07 05:39:55
表data_01,有uuid,data_id,c_time以及其他一些字段。其中,uuid是主键,且是无任何意义。
采用组合分区。以c_time字段的区间分区和以data_id字段的散列子分区。同时,data_id和c_time可以唯一确定一条记录。


这样的表大概有10个,data_02....data_10。每个表中的data_id大概有1万。即共有10万个data_id,而每个data_id,每30秒会有一条数据。

现在,表中的数据过多,想删除一些分区。由于uuid是主键,其对应的有唯一索引,是全局的。删除会使全局索引失效,而重建索引又很慢。
如果换做data_id和c_time做联合主键,并以data_id和c_time联合做局部索引,可以解决删除分区带来索引失效的问题。但又会带来向表中插入数据很慢的问题。


不知道有没有更好的办法解决删除分区?
初次接触Oracle,还请各位大牛多多指教,。。。。
...全文
735 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinpingf 2013-04-08
  • 打赏
  • 举报
回复
如果有应用使用了uuid列不便删除的话,可以考虑保留字段删除主键
hao123yao 2013-04-08
  • 打赏
  • 举报
回复
引用 5 楼 xinpingf 的回复:
uuid是主键、且无任何意义,为何不干脆drop该字段? 主键也不是必须有才行…… 如果你能从业务控制不出现重复数据,并且有索引支持查询性能——我觉得,主键不要也罢。。。
这个建议不错。的确可以试试无主键的情况。
hao123yao 2013-04-08
  • 打赏
  • 举报
回复
引用 4 楼 ilovemk 的回复:
1.从表设计的合理性来看,尽量不要用没意义的字段来做主键,建议你删掉uuid列,data_id和c_time做联合主键,并以data_id和c_time联合做局部索引。 2.可以选择在晚上执行: alter table table_name drop partition xxx update global indexes;
uuid当时加上去的确考虑欠妥。之所以没删,考虑是到对web的影响。 目前,一个多月的数据用update global indexes还行。一张表花了大概5min左右,等数据量达到一年,估计就不行了。
xinpingf 2013-04-08
  • 打赏
  • 举报
回复
引用 6 楼 xinpingf 的回复:
主键自然必须使用全局索引,有全局索引了,局部索引存在的意义也不大。
我指两字段联合主键
xinpingf 2013-04-08
  • 打赏
  • 举报
回复
主键自然必须使用全局索引,有全局索引了,局部索引存在的意义也不大。
xinpingf 2013-04-08
  • 打赏
  • 举报
回复
uuid是主键、且无任何意义,为何不干脆drop该字段? 主键也不是必须有才行…… 如果你能从业务控制不出现重复数据,并且有索引支持查询性能——我觉得,主键不要也罢。。。
ilovemk 2013-04-07
  • 打赏
  • 举报
回复
1.从表设计的合理性来看,尽量不要用没意义的字段来做主键,建议你删掉uuid列,data_id和c_time做联合主键,并以data_id和c_time联合做局部索引。 2.可以选择在晚上执行: alter table table_name drop partition xxx update global indexes;
hao123yao 2013-04-07
  • 打赏
  • 举报
回复
引用 1 楼 luoyoumou 的回复:
用“局部索引”代替“全局索引”即可解决问题!
已经说了,data_id和c_time联合做局部索引(唯一所索引)会来插入数据效率问题。而uuid不是分区字段,也不能做局部索引吧。。。
luoyoumou 2013-04-07
  • 打赏
  • 举报
回复
尽量用“局部索引分区”,而不用“全局索引分区”
luoyoumou 2013-04-07
  • 打赏
  • 举报
回复
用“局部索引”代替“全局索引”即可解决问题!
第1章 概述 1. BI介绍 2. Oracle介绍与安装 2.1 Oracle安装 2.2 Oracle 默认用户 2.3 服务器连接 3. PL/SQL Developer工具 4. Oracle用户和权限 4.1用户和权限 4.2角色 第2章 SQL数据操作和查询 1. SQL简介 2. 查询 2.1查询结构 2.2查询顺序 . 2.3聚合函数 . 3. 创建表和约束 3.1 Oracle常用数据类型 3.2创建表 3.3表的约束 4. 数据操作语言(DML) 4.1数据插入 4.2更新数据 4.3删除数据 4.4 TRUNCATE(DDL命令) 5. 操作符 5.1算术运算 5.2关系运算和逻辑运算 5.3字符串连接操作符(||) 6. 高级查询 6.1 DISTINCT操作 6.2 NULL操作 6.3 IN 操作 6.4 BETWEEN…AND… 6.5 LIKE模糊查询 6.6 集合运算 6.7 连接查询 第3章 子查询和常用函数 1. 子查询 2. Oracle中的伪列 2.1 ROWID 2.2 ROWNUM 3. Oracle单行函数 3.1字符函数 3.2数字函数 3.3日期函数 3.4转换函数 3.5其他常用函数 4. Oracle分析函数 4.1 分析函数介绍 4.2 分析函数种类和用法 4.3 行列转换 第4章 表空间、数据库对象 1.同义词 2.序列 3.视图 4.索引 4.1 索引介绍 4.2 索引种类 4.3 索引优缺点 4.4 索引失效 5.表空间 6.表分区 6.1表空间及分区表的概念 6.2表分区的具体作用 6.3.表分区的优缺点 6.4表分区的几种类型及操作方法 6.5有关表分区的一些维护性操作 第5章 PL/SQL程序设计 1. PL/SQL简介 2. PL/SQL基础 2.1声明 2.2条件控制 2.3循环控制 2.4游标 2.5动态SQL 3.创建存储过程 4.创建自定义函数 5.异常处理 6.同步数据 7.创建包 8.创建日志 第6章
目录 Oracle教程 1 一、 为什么要学习Oracle 8 二、 Oracle公司 8 三、 Oracle安装、启动及缷载 9 3.1. 安装 9 3.2. Oracle的卸载、删除 9 四、 Oracle体系结构 10 4.1. 体系结构 10 4.2. 会话 11 4.3. 内存结构 11 4.4. Oracle 实例进程结构 12 4.5. Oracle 物理组件 13 4.6. Oracle 逻辑组件 13 4.7. 模式 15 4.8. 数据文件(*.dbf) 15 4.9. 控制文件(*.tcl)和日志文件(*.log) 16 4.10. 逻辑存储结构 16 4.11. 数据字典 17 五、 Oracle术语解释详解(摘自网络) 20 4.1. 数据库名 21 4.2. 数据库实例名 23 4.3. 数据库域名 24 4.4. 数据库服务名 24 六、 SYS和SYSTEM用户 25 七、 启动Oracle 25 八、 Oracle管理工具介绍 26 九、 查看Oracle 27 1. 查看当前的Oracle实例名称和主机名称: 27 2. 查看用户帐户及状态 27 十、 Oracle用户解锁 27 1. 对scott用户解锁 27 2. 更改scott用户的密码: 27 3. 锁定scott用户: 27 十一、 使用OEM 27 十二、 SQL/PLUS连接数据库 28 12.1. SQL*Plus工具 28 12.2. 连接方式 28 12.3. 连接远程数据库 29 十三、 SQL*PLUS常用命令 30 十四、 表空间 49 14.1. 创建表空间 49 14.2. 表空间状态属性 53 14.3. 删除表空间 56 14.4. 增加表空间尺寸 56 14.5. 查看剩余空间 56 14.6. 合并空闲块 57 14.7. 设置默认表空间 57 14.8. 撤销表空间 58 14.9. 查看当前用户的缺省表空间 61 十五、 用户管理 61 15.1. 创建用户 61 15.2. 删除用户 63 15.3. 修改用户 63 15.4. 修改口令 63 15.5. 使密码失效 64 15.6. 修改默认表空间 64 15.7. 锁定用户 64 15.8. 权限的概述 65 15.9. 系统权限 66 15.10. 对象权限 70 15.11. 查看和撤消权限 72 15.12. 角色 75 15.13. 创建角色 77 15.14. 为角色授予权限 78 15.15. 为用户授予角色 78 15.16. 修改和删除角色 79 十六、 数据类型 81 16.1. 关于number、int、integer的说明 83 16.2. binary_float和binary_double 83 16.3. 伪列 84 十七、 表和约束 84 17.1. 创建表 84 17.2. 管理表中的列 86 17.3. 重命名表 87 17.4. 移动表 87 17.5. 删除表 88 17.6. 约束分类 88 17.7. 查看约束 93 17.8. 指定级联操作类型 94 十八、 SQL基础 95 18.1. SQL简介 95 18.2. 数据定义语言 97 18.3. 数据操纵语言 97 18.4. 事务控制语言 98 18.5. 数据控制语言 99 18.6. SQL 操作符 99 18.7. MEGER语句 103 十九、 Oracle函数 106 19.1. 字符函数 106 19.2. 数字函数 108 19.3. 聚合函数 109 19.4. 日期时间函数 110 19.5. 转换函数 111 19.6. 日期时间格式参数 113 19.7. 分析函数 114 19.8. 通用函数 115 19.9. GROUP BY子句 116 19.10. HAVING子句 117 19.11. 实用方法 118 19.12. 练习 118 二十、 子查询 119 20.1. 使用子查询 120 20.2. IN\NOT IN操作符 122 20.3. ANY和ALL操作符 123 20.4. 常见查询错误 124 20.5. 多列子查询 125 20.6. 关联子查询 126 20.7. 嵌套子查询 127 二十一、 高级查询 128 22.1. UNION操作符 128 22.2. 层次化查询 129 22.3. 格式化查询 131 22.4. 遍历查询 133 22.5. 扩展Group By子句 134 二十二、 模式对象 137 23.1. 同义词 137 23.2. 序列 138 23.3. 索引 140 23.4. 视图 155 二十三、 分区表 159 24.1. 分区 159 24.2. 创建分区表 161 24.3. 范围分区(Range) 161 24.4. 列表分区(List) 164 24.5. 散列分区(Hash) 165 24.6. 组合范围散列分区 167 24.7. 复合范围散列分区 168 24.8. 维护表分区 169 二十四、 PL/SQL基础 173 24.1. PL/SQL概述 173 24.2. PL/SQL代码编写规则 173 24.3. PL/SQL程序块 175 24.4. 常量和数据类型 177 24.5. 变量 179 24.6. 运算符和注释 181 24.7. IF条件语句 182 24.8. CASE语句 184 24.9. 循环语句 186 24.10. 复合变量 190 24.11. 记录类型 192 24.12. 表类型 194 24.13. 集合类型 195 24.14. 集合方法 199 24.15. 游标 205 24.16. 异常处理 222 二十五、 PL/SQL高级 228 25.1. 子程序 228 25.2. 存储过程 229 25.3. 函数 236 25.4. 程序包 240 25.5. 触发器 243

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧