李维山
后端架构师
展开
-
【面试宝典】如何对MySQL进行优化?
一、数据库设计所有字段都设置默认值。 尽可能使用较小的整数类型。 尽可能定义字段为NOT NULL,除非该字段需要NULL。 尽可能使用固定大小的记录格式,如CHAR,除非变长字段用VARCHAR。二、数据库使用尽量使用长连接。 使用 EXPLAIN 查看复杂SQL执行方式,进行优化。 使用 LIMIT 语句尽量要跟 ORDER BY 或 DISTINCT 配合,避免一次FULL TABLE SCAN。 使用 TRUNCATE 清空表记录,而不是DELETE。 使用 UNSIGNED原创 2024-01-12 13:06:08 · 287 阅读 · 2 评论 -
【面试宝典】图解TCP三次握手、四次挥手
一、三次握手二、四次挥手原创 2024-01-12 11:29:38 · 124 阅读 · 0 评论 -
【面试宝典】图解ARP协议、TCP协议、UDP协议
一、ARP协议二、TCP协议原创 2024-01-12 11:28:11 · 192 阅读 · 0 评论 -
【面试宝典】图解OSI七层模型、TCP/IP四层模型
一、OSI七层模型二、TCP/IP四层模型原创 2024-01-12 11:14:21 · 42 阅读 · 0 评论 -
【面试宝典】MySQL的事务隔离级别&脏读、幻读、不可重复读
3、不可重复度:同一事务中,同一查询在t1时刻和t2时刻两次读取结果不一致,发现这行数据已经被修改或删除了。2、幻读:同一事务中,同一查询多次执行时,由于其他insert操作事务的提交,导致每次返回不同的结果集。1、脏读:一个事务读取了 另一个事务 已修改未提交 的数据。原创 2024-01-12 10:09:06 · 119 阅读 · 0 评论 -
【面试宝典】Redis缓存穿透、雪崩、击穿,简析及解决办法
2、缓存数据更新不频繁,缓存刷新耗时较少时,可采用基于 Redis、zookeeper 等分布式互斥锁,或者本地互斥锁,使少量的请求能到数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存。3、缓存数据更新频繁或者在缓存刷新的流程耗时较长时,可利用定时线程在缓存过期前主动地重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存。Redis中多个缓存key一段时间内集中失效(大面积),发生大量缓存穿透,同时大量请求进来,落到数据库,造成数据库阻塞、甚至宕机。原创 2023-10-20 15:16:28 · 175 阅读 · 2 评论