赞
踩
接口的出现:
相同点
不同点
SoftReference<byte[]> sr = new SoftReference<>(buff);
java.lang.ref.SoftReference类来表示软引用WeakReference<byte[]> sr = new WeakReference<>(buff)
用 java.lang.ref.WeakReference 来表示弱引用用 PhantomReference 类来表示
加锁防止并发
共享锁,读锁,可以查看但无法修改和删除数据,当数据库被别人增加了读锁的时候,其他新来的事务可以读数据,但是不能写,也就是,如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁,获得共享锁的事务只能读数据,不能修改数据
排他锁,写锁,既能读数据,也能修改数据。如果数据库已经被别人加了排他锁,那么后面的事务无法在数据库上加任何锁
悲观锁,借助数据库锁机制,在修改数据之前先锁定,一个事务如果锁定了某行数据,其他事务必须等待该事务处理完才可以处理那行数据。
乐观锁,不会使用数据库提供的锁机制,记录数据版本
总结
相同点
不同点
arraylist扩容
linkedlist扩容
set:无序不可重复的
list:有序可重复的
map:有映射关系的集合
queue
分区
分桶
底层实现原理
索引的本质:索引是一种数据结构。目的在于提高查询效率,类比字典。是排好序的快速查找的数据结构。
create [unique] index indexname on tablename(columnname(length))
alter tablename add [unique] index indexname on(columnname(length));
两大功能:排序和查找、影响where后面的查找和order by后的排序
索引会将该列按照一定的方法进行存储,这样在查找的时候,不需要从第一条记录开始读完整个表,而是可以直接到达一个位置去搜索,节省时间。底层使用的是B+树,索引的作用是做数据的快速检索,快速检索的本质是数据结构。
索引本身很大,不可能全部存储在内存中,因此索引以索引文件的形式存储在磁盘上。
哈希表:但是存在数据碰撞,哈希函数对不同的key计算出一个结果,为了解决哈希碰撞,用链表把碰撞的数据连起来,有则一直遍历到链表尾,直达找到真正的 key 对应的数据为止。为什么不使用哈希表:范围查找时,一次把数据找出来加载到内存,然后再从内存里筛选目标范围内的数据
二叉查找树:在极端情况下会退化为线性链表,时间复杂也从O(logn)退化为O(n),存在不平衡导致检索性能降低,不能直接用于实现Mysql底层索引。
红黑树,通过左旋右旋结点自动调整树的形态
自平衡二叉树AVL,查找性能O(logn)好,可以实现范围查找,但是考虑磁盘IO,每一个树的结点只存储了一个数据,因此一次磁盘IO只能取出来一个结点上的数据加载到内存,消耗时间(设计数据库索引需要首先考虑尽可能减少磁盘IO的次数,因为磁盘IO的特点时从磁盘读取1kb和1b数据消耗的时间差不多),因此改进思路:一个结点多存储数据,这样一次磁盘IO就可以多加载数据到内存
B树,每个结点限制最多存储两个key,B树一个结点里存储的数据,所以B树一个结点存不了很多个数据,但是B+树一个结点可以存很多索引,叶子结点存所有数据。时间复杂度是o(logn)
B+树,存储的是索引,地址,叶子结点存储数据,用链表串联,便于范围查找,因此Mysql数据库的索引用的就是B+树。时间复杂度O(logN)
优点
缺点
应用
分类
关系型数据库
非关系型数据库
将一个文件放在多台服务器上存储,按照文件快的方式存储,不同block可以存储在不同的服务器上,由Datanode实际存储。
是基于Hadoop的一个数据仓库工具,相当于hadoop的客户端。将结构化的数据文件映射为一张表,并提供类sql查询功能
内表
总结
创建语句
存储hive版本
hive数据库相关元数据表
hive表和视图相关的元数据表
Hive文件存储信息相关的元数据表
hive表字段相关的元数据表
hive表分区相关的元数据表
逻辑架构:连接、服务、引擎、存储
存储引擎
char
varchar
聚簇索引
辅助索引(二级索引)
总结
InnoDB索引实现
MyISAM引擎
链接: link.
磁盘
InnoDB存储引擎
B-树
B+树
聚集索引的B+Tree中的叶子节点存放的是整张表的行记录数据。辅助索引与聚集索引的区别在于辅助索引的叶子节点并不包含行记录的全部数据,而是存储相应行数据的聚集索引键,即主键。当通过辅助索引来查询数据时,InnoDB存储引擎会遍历辅助索引找到主键,然后再通过主键在聚集索引中找到完整的行记录数据。
hash索引:包括哈希码和行记录指针
哈希索引和b树得区别
进程
线程
一个程序至少一个进程,一个进程至少一个线程;进程分配内存,线程分配栈
定义:锁是计算机协调多个进程或者线程并发访问某一资源的机制
从对数据操作的类型分
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。