表分析作用是什么?
表结构的作用是定义数据库中表的各个字段的属性(数据类型、是否为空、长度等等) 其次,表关系的作用是为了表示实体及实体之间关系的一种手段。也就是通常所说的实体-关系模型(ER Modeling) 最后,表统计作用是对表格中的数据进行量化的计算和统计,用来辅助分析和决策 如果要具体一些的话,可以看看我写的这篇文章 简言之,数据库就是用于存储数据的仓库,而数据库的表则是这个仓库中存放数据的货架。
至于你说的那些功能,其实都是在表的基础上实现的。例如,通过CRUD操作实现对数据的增删改查,这就是通过在表基础上增加相应的操作来实现。再比如,对于查询,我们可以在查询语句里指定查询的行数和列数,这也是在表的基础上进行的限制。
总之,如果没有表,那么任何操作都是无从说起的。就像如果没有货架,那么我们买回来的东西就无处安放,当然也就谈不上对货物进行分类、统计甚至排序了。
对表执行ANALYZE命令
当表中数据变化很多的时候,需要对表执行ANALYZE 命令,该命令会分析表结构以及表中数据的分布,并且将收集到的信息写入到系统表空间的SYSSTATS$,SYS.COL_USAGE$等系统表中,便于成本优化器进行选择使用。如果数据变化不频繁,可以3~6个月执行一次ANALYZE命令。
如何评估是否需要对表结构进行调整
如果需要频繁的插入、删除或者是修改某表中的数据,随着数据变化的增多,可能会造成表的碎片率不断增大,这时可以先执行ANALYZE TABLE命令,然后再执行SELECT DBMS_SPACE.ADMIN_OBJECT_INFO('','')查看该表以及其索引的占用空间的情况,该函数返回的参数描述如下表描述所示。
如果返回的碎片占用空间与当前数据库对象实际所占用的空间相比过高,且响应时间过长可以考虑对表进行调整。在执行调整的时候,可以考虑直接通过数据库的导出导入功能,将该表导出后再导入到新的表空间中,新表空间的大小与原表空间所使用的实际空间匹配或者略微大点即可。如果调整的是有索引的表,不要忘记将索引也一同导出。如果无法承担长时间的业务宕机,可以考虑采用先切换再调整的方案:先创建一个与原表模式相同的新表,将新表切换到业务中,并在业务对原表访问较空闲时,将原表数据直接插入到新表中,然后删除原表,将新表重命名成原表的名称。这样同样可以达到调整表结构的目的,且可以减少业务的宕机时间,适用于业务繁忙的系统。