摘要: MyISAM不支持 事务,但它的每个操作都是原子级,而innodb支持事务 MyISAM只支持表级锁,不支持行级锁,innodb支持表级锁 MyISAM是非聚集索引,每次查询要2次,先查索引表,后查数据,而innodb是聚集索引,索引和数据放在一起 MyISAM不支持外键约束,innodb支持外键约 阅读全文
posted @ 2022-04-05 20:32 适时适言 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 设置索引的必须是where后的字段 如果数据很少,没必要索引 尽量使用短索引 不能过度索引 有外键的数据必须索引 经常变更的字段不要制造索引 尽量扩展索引,而不是新建索引 阅读全文
posted @ 2022-04-05 19:47 适时适言 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 先删除mysql,再更新redis。但如果redis更新失败,会出现数据不同步 先删除redis,再更新mysql。也有可能出现不同步,比如删除完redis之后,另外一个线程马上查询了,然后才删除mysql,这时候就会不同步 延时双删:先删除redis, 再更新mysql,延迟几百毫秒再删除redi 阅读全文
posted @ 2022-04-05 16:19 适时适言 阅读(472) 评论(0) 推荐(0) 编辑
摘要: ·先查看是否使用索引 ·如果使用了索引,查看是否能够优化索引 ·是否查了多余必要的字段,导致返回慢 ·是否数据太大到要分表分库的情况 ·是否可以提升配置,没招了 阅读全文
posted @ 2022-04-05 15:56 适时适言 阅读(24) 评论(0) 推荐(0) 编辑
摘要: ·按粒度划分 ·行级锁 ·表级锁 ·间隙锁 ·按逻辑划分 ·乐观锁:先试试能不能用,并不会真的加锁,而是通过版本号实现 ·悲观锁:行级锁、表级锁都是悲观锁 ·按属性划分 ·共享锁(读锁):加了读锁后其他事务只能读,不能写 ·排他锁(写锁):加了写锁后其他事务不能读也不能写 阅读全文
posted @ 2022-04-05 15:48 适时适言 阅读(35) 评论(0) 推荐(0) 编辑
摘要: B树和B+树的区别 B树: ·节点有序 ·一个节点可以存储多个数据 B+树: ·兼容B树的特点 ·每个叶子节点都有指向相邻叶子节点的指针 ·非叶节点中所有的数据都在叶子节点中冗余了,并且已经排好序了 阅读全文
posted @ 2022-04-05 15:39 适时适言 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1.synchronized是关键字,ReentrantLock是一个类 2.synchronized是自动加锁和解锁的,ReentrantLock是手动的 3.syschronize是JVM层面的锁,ReetrantLock是API层面的锁 4.Sychronize是非公平锁,ReentrantL 阅读全文
posted @ 2022-03-31 21:58 适时适言 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1.每个线程都有一个THreadlocalMap类型的成员变量threadlocals,这个map容器的key就是我们的threadlocal,对应的value就是我们要保存的值 2.当执行set方法的时候,先获取当前线程对象,然后获取当前线程对象对应的ThreadlocalMap对象,并把当前线程 阅读全文
posted @ 2022-03-31 20:33 适时适言 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 守护线程:也叫后台线程,为所有非守护线程(用户线程)提供服务的线程。 特点:1.在所有的用户线程都执行完毕后,守护线程会自动关闭; 2.一个线程如果要定义成守护线程,他必须可以随时关闭,尤其是那些重要的线程不能定义成守护线程,比如mysql输入之类的,不能中断 3.线程池中没有守护线程,它会自动把守 阅读全文
posted @ 2022-03-31 20:14 适时适言 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一.sleep()和wait()之间的区别: 1.sleep是Thread的静态本地方法,wait是Object的本地方法; 2.sleep不会释放lock,但wait会释放锁,将线程从锁池转到等待池; 3.sleep不依赖与synchronized,但waIt必须和synchronized配套使用 阅读全文
posted @ 2022-03-31 19:54 适时适言 阅读(105) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示