mysql-2020就业技能
2020-04-21 10:32:57 0 举报
AI智能生成
2020mysql就业必备技能
作者其他创作
大纲/内容
事务
事务的四大特性
A 原子性
最小单元
C 一致性
事务提交要么都成功,要么都失败
I 隔离性
事务之间相互隔开,相互不影响
子主题
D持久性
事务操作的完成时,就行持久化操作,存储在硬盘上
声明式事务
传播特性
required
默认,有事务提交事务,没事务创建事务
support
如果当前没有事务,就以非事务方式执行。
requires_new
新建事务,把有事务直接挂起
unsupport
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
never
以非事务方式执行,如果当前存在事务,则抛出异常。
嵌入式事务nested
支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
隔离级别
读未提交
产生脏读,不可重复读,幻读
读已提交
解决脏读
可重复读
解决了不可重复读
串行化,序列化
解决幻读
超时时间
默认-1,不超时
异常处理
默认抛出异常,事务回滚
只读
默认false
数据库优化?
索引
聚集索引
数据存储在叶子节点,非叶子节点存储索引
innodb
非聚集索引
非叶子节点存储索引,地址。通过地址再次查找数据
mysma
视图
主从复制,读写分离
作用
解决的问题
原理及过程
读写分离的解决方案
出现的问题,怎么解决?
主从同步延时问题,并发过大的时候,从机sql线程单线程压力大会出问题。
分库
一主多从
mysql5.7以后,MTS并行复制技术
分库分表
使用缓存nosql
使用搜索引擎,solr,少用like
sql语句优化,少用*
其他问题汇总
隔离级别跟锁的关系
什么是慢查询
优化
InnoDB引擎的行锁是怎么实现的?
有关权限的表都有哪几个
binlog有有几种录入格式?分别有什么区别?
数据库为什么使用B+树而不是B树
什么是游标?
什么是存储过程?有哪些优缺点?
触发器
设计规则
表
三大范式(表设计的规则)
第一范式,所有字段是原子性,不可分割的
第二范式,在第一范式的基础上,非主键跟主键是完全依赖的
第三范式,在第二范式的基础上,非主键只依赖主键,非主键之间是不相互依赖的,达到了取消依赖传递的目的
表内容
主键
索引(数据结构)
种类
主键索引
唯一(不重复),不为null,只有一个
唯一索引
唯一(不重复),可为null,可以有多个
普通索引
可以为null,不唯一
全文索引
子主题
索引结构
b+
Hash
熟悉的索引
innodb索引
子主题
子主题
myisam索引
数据结构
数据存储结构
二叉树
对于递增的索引存储时,树不平衡
红黑树
平衡二叉树,但是对于递增的索引存储时,树高过高
Hash
对每一行数据都hash运算,查找方便,但是范围查找就不好使
b树
树高得到了控制,但是也无法做到范围查找
三次i/o操作就可以容纳千万级数据
b+树
b树的基础上,将每个索引都存储在非叶子节点上。解决了范围查找
创建索引的规则
索引覆盖等概念
优缺点
场景
基本原理
注意点
存储引擎
innodb引擎
支持事务
支持外键
支持行锁
两个文件
frm
idb
InnoDB引擎的4大特性
myisam引擎
不支持事务,外键,行锁
三个文件
frm
MyI
MyD
视图
特点
场景
优缺点
数据类型
整型
int
bigint
浮点
float
double
decimal
日期
date
datetime
引用类型
char
varvhar
锁
粒度
表锁
行锁
页锁
死锁
产生原因
解决方案
类别
排他锁
共享锁
类别
乐观锁
悲观锁
范围
临键锁
记录锁
间隙锁
sql
类别
DDL
DCL
DML
DQL
查询的顺序
聚合函数
语法
内部查询
左查询
limit
distinct
子查询
约束
in 和 exists 区别
生命周期
多线程
JUC
实现多线程的方法
继承thread
线程的 run()和 start()有什么区别?
实现runable接口
实现callable接口
FutureTask
适配模式
开启线程池
原子类Atomic
AtomicInteger
i++,++i
collection-queue
BlockingQueue
ArrayBlockingQueue
LinkedBlockingQueue
SynchronousQueue
LinkedBlockingDeque
PriorityBlockingQueue
DelayQueue
关键字
volatile
可见性
不保证原子性
禁止指令重排
syn
synchoronized与lock
syn是关键字,lock是一个接口
syn为非公平锁,lock默认非公平锁(false),可以改为公平锁(true)
lock需要手动拿锁释放所,syn不用
两个都是可重入锁(递归锁)
syn配wait,用notify唤醒;lock配await,signal唤醒
lock,lockInterruptibly()实现,这是一个可以对中断进行响应的锁申请动作,锁中断可以避免死锁
synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁
通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。
应用
单例模式(双端检索机制)
说一下 synchronized 底层实现原理?
锁升级的原理是什么?
当一个线程进入一个对象的 synchronized 方法 A 之后,其它线程是否可进入此对象的 synchronized 方法 B?
lock
ReentrantLock
底层 Unsafe 的park 方法加锁
优点
自旋锁
cas+while
cas概念
ABA问题以及其他问题
ReadWriteLock 读写锁
Executor
ExecutorService
ThreadPoolExecutor
corePoolSize
核心线程数
aximumPoolSize
容纳最大线程数
keepAliveTime
空闲线程的时间
TimeUnit
时间单位
BlockingQueue
队列
ThreadFactory
产出线程的工厂,一般默认就行
RejectedExecutionHandler
拒绝策略
优点
池化技术
种类
newSingleThreadExecutor
newFixedThreadPool
newCachedThreadPool
newScheduledThreadPool
线程池都有哪些状态?
线程池中 submit() 和 execute() 方法有什么区别?
常用的并发工具类
CountDownLatch
一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
CyclicBarrier
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。
Semaphore
一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动
多线程常用并发集合
ConcurrentHashMap<K,V>
CopyOnWriteArrayList<E>
使用场景
缺点
设计思想
CopyOnWriteArraySet<E>
与同步集合区别
线程中常用方法区别?
线程的 sleep()方法和 yield()方法有什么区别?
sleep() 和 wait() 有什么区别?
你是如何调用 wait() 方法的?使用 if 块还是循环?为什么?
为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?
为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步块中被调用?
Thread 类中的 yield 方法有什么作用?
为什么 Thread 类的 sleep()和 yield ()方法是静态的?
线程的 sleep()方法和 yield()方法有什么区别?
Java 中 interrupted 和 isInterrupted 方法的区别?
如何停止一个正在运行的线程?
Java 中你怎样唤醒一个阻塞的线程?
notify() 和 notifyAll() 有什么区别?
Java 如何实现多线程之间的通讯和协作?
同步方法和同步块,哪个是更好的选择?
其余问题汇总
并发编程三要素是什么?
线程出现的安全问题?怎么解决
并发并行区别
什么是多线程?优缺点
什么是进程,线程?区别
什么是上下文切换?
守护线程和用户线程有什么区别呢?
如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?
什么是死锁?产生的原因
如何避免线程死锁
线程周期及几种状态
什么是线程同步和线程互斥,有哪几种实现方式?
在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
什么叫线程安全?servlet 是线程安全吗?
在 Java 程序中怎么保证多线程的运行安全?
你对线程优先级的理解是什么?
线程类的构造方法、静态块是被哪个线程调用的
Java 线程数过多会造成什么异常?
synchronized、volatile、CAS 比较
乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
多线程锁的升级原理是什么?
SynchronizedMap 和 ConcurrentHashMap 有什么区别?
并发容器之ThreadLocal详解
ThreadLocal 是什么?有哪些使用场景?
ThreadLocal 是什么?有哪些使用场景?
ThreadLocal内存泄漏分析与解决方案
ThreadLocal造成内存泄漏的原因?
ThreadLocal造成内存泄漏的原因?
Executors和ThreaPoolExecutor创建线程池的区别
在 Java 中 Executor 和 Executors 的区别?
收藏
收藏
0 条评论
下一页