首页 > 游戏 > 问答 > 游戏经验 > 什么表可以随机访问,为什么使用多级页表

什么表可以随机访问,为什么使用多级页表

来源:整理 时间:2022-05-21 06:12:31 编辑:游戏知识 手机版

顺序表是存储位置相邻连续的,可以随即访问的一种数据结构;链表是通过指针来描述元素关系的一种数据结构。运算时间的不同顺序表是一种随机存取结构,便于元素的随机访问,因此对于只进行查找的运算而很少做到插入和删除运算的应用,宜采用顺序表;链表是一种非随机存取结构,对任一结点的操作都必须是从头指针开始顺着链扫描才能取得。

顺序表和链表的异同点有哪些

顺序表是存储位置相邻连续的,可以随即访问的一种数据结构;链表是通过指针来描述元素关系的一种数据结构。相同点都是线性表,是n个数据特性相同的元素组成的有限序列。存储空间的不同顺序表的存储空间是静态的,要求预先分配空间;链表的存储空间是动态分配的,只要是有内存空间,就可动态申请空间。运算时间的不同顺序表是一种随机存取结构,便于元素的随机访问,因此对于只进行查找的运算而很少做到插入和删除运算的应用,宜采用顺序表;链表是一种非随机存取结构,对任一结点的操作都必须是从头指针开始顺着链扫描才能取得。

多表连接查询和多次单表查询哪个效率高?为什么

如果数据量小的表,这样的设计意义不大,而且当然是单表速度快。若在大数据量情况下,设计非常有意义。在多表连接中注意数据的条目和外健,避免出行大量冗余数据导致性能下降。下面我以Oracle讲讲数据查询的整个过程技术。由于数据分布到数据块,在大量数据设计中可以将数据存储于多个数据块,在高并发进程的随机访问的情况下,能有效减少块冲突 同样的数据需要更多的数据块来存储,由于数据块的块头元信息大小固定,所以需要更多的空间来存储块头元信息。

行长度过大容易导致行连接,从而导致Oracle获取数据块的效率降低 ,在行长度固定的前提下,单块能够存储更多的数据行,也就意味着Oracle一次I/O能读取更多的数据行。适合连续顺序读或者存放大对象数据(如LOB数据) 由于大数据块可以存放更多的索引叶节点信息,容易引起争用,所以大数据块不适合存放索引叶节点信息。

大量数据表的数据库参数设置DB_FILE_MULTIBLOCK_READ_COUNT表示Oracle一次顺序I/O读操作最多能读取的数据块块数。该参数的默认值随操作系统的不同而不同。在全表扫描或者索引快速扫描比较多的系统中(如DSS系统),建议将该值设置得较大。但是DB_FILE_MULTIBLOCK_READ_COUNT参数受操作最大单次I/O大小的限制,大多数操作系统单次读操作的大小不能超过1MB,这也就意味着在8KB数据块大小的情况下,该参数最大值为128。

值得一提的是,该参数的大小还会影响Oracle CBO对执行计划的评估,如果设成较大值,Oracle的执行计划倾向于全表扫描。当该参数设置为0或者保持默认时,CBO假设全表扫描时最多能连续读取8个数据块。从Oracle 11R2开始,DB_FILE_MULTIBLOCK_READ_COUNT的取值算法如下:db_file_multiblock_read_count = min(1048576/db_block_size , db_cache_size/(sessions * db_block_size))注意 数据库参数BLOCK_SIZE在设定之后,在数据库生命周期内不可更改。

文章TAG:页表多级随机访问

最近更新