
数据库
by_yanzhenshun
这个作者很懒,什么都没留下…
展开
-
redis常见问题
1.为什么redis这么快(1)完全基于内存,绝大部分请求都是纯粹的内存操作,非常快速。数据存在内存中,类似于hashmap这种,查询和操作的时间复杂度都是O(1)(2) 采用单线程的,避免了不必要的上下文切换和竞争条件。也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗(3)使用了多路I/O复用模型,非阻塞I...原创 2020-04-25 23:51:02 · 353 阅读 · 0 评论 -
Mysql索引底层实现原理
一、定义索引(index)是帮助Mysql高效获取数据的数据结构。所以,索引的本质的数据结构。二、设计原理为什么要使用索引,很容易想到的目前就是加快查询效率。因此数据库的设计者会从查询算法的角度上开始优化。最基本的查询算法也就是顺序查找,这样的时间复杂度为O(n)的算法在数据量非常大的情况下显示是糟糕的。随着计算机科学技术的发展,例如二分查找(binary search)、二叉树查找(bi...原创 2020-02-18 17:54:11 · 460 阅读 · 0 评论 -
sql优化技术整理
1.禁止使用select * ,需要哪些字段查哪些字段2.使用select in ()的时候,如果存在子查询,使用exist 代替in如果连接列id 上有索引,那么查询CLASS_B时,无需查询实际表,仅需要查索引就可以了。使用exists ,那么只有查到一行数据满足条件就会终止查询,不会产生临时表。使用in查询时,数据库首先会执行子查询,然后将结果保存在临时表中,然后扫描整个临时表,很...原创 2020-02-17 22:16:27 · 536 阅读 · 0 评论 -
谈一谈数据库的分库分表
一、为什么要进行分库分表(1)解决高并发问题(2)数据库数据量过大二、拆分方式(1)垂直拆分,通常是把一个有很多字段的表给拆分成多个表,或者是多个库上去。每个库表的结构都不一样,每个库表都包含部分字段。一般情况下,会将较少的访问频率很高的字段放到一个表里去,然后将较多的访问频率很低的字段放到另外一个表里去。因为数据库是有缓存的,你访问频率高的行字段越少,就可以在缓存里缓存更多的行,性能就越...原创 2020-01-29 17:43:56 · 303 阅读 · 0 评论