数据库 web 安全之 sql 注入 一、关于 SQL 注入 sql 注入是目前 web 应用中一种常见的攻击方式,通过恶意构造参数生成不可预期的 sql 语句,来完成不可告人的秘密。危害极大!它的影响主要有以下两点: 第一:拖库,拖库的意思是直接把整... 02 月 29 日493评论 阅读全文
MySQL MySQL 报错 Lost connection to MySQL server at 'reading initial communication packet'的解决办法 使用 mysql 连接远程服务器时报错,在百度和 google 查找都没有找到能解决问题的办法: [crayon-6823a3571d9aa604382117/] 分析应该是以下两个原因导致的: 服务器有防火... 02 月 29 日28,068评论 阅读全文
MySQL MySQL 中的聚簇索引、非聚簇索引、联合索引和唯一索引 一、索引类型 索引根据底层实现可分为 B-Tree 索引和哈希索引,大部分时候我们使用的都是 B-Tree 索引,因为它良好的性能和特性更适合于构建高并发系统。 根据索引的存储方式来划分,索引可以分为聚簇索引... 02 月 19 日5,6044索引 阅读全文
Redis redis 中的 AOF 持久化和 RDB 持久化 一、 AOF 持久化 1.1 实现机制 AOF(Append Only File) 是 redis 持久化方式的一种,它通过把所有 redis 执行过的命令都写入到文件来维持持久化。一旦服务崩溃,则可以重放这些命令... 02 月 17 日802评论 阅读全文
Redis redis 中的键值淘汰策略 当使用的内存到达上限后,redis 提供了 6 种策略来淘汰键值: 策略 描述 volatile-lru 在所有设置了过期时间的键值中根据 LRU 算法淘汰最近最少使用的 allkeys-lru 对数据库中所有... 02 月 17 日407评论 阅读全文
MySQL MySQL 中的 B+树索引和哈希索引 一、为什么要使用索引 索引是存储引擎用于快速找到记录的一种数据结构。索引对于数据库良好的性能十分关键,尤其是表中的数据量越来越大时,索引对性能的影响十分明显。 《高性能 MySQL 》中对索引的评价是:索... 02 月 16 日838评论索引 阅读全文
Redis redis 源码分析:链表实现 一、链表定义 链表在 redis 中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。 redis 中链表在 adlist.h 和 adlist.c 中实现,只用了 300+行代码... 02 月 14 日555评论redis 链表 阅读全文
MySQL 数据库中的多版本并发控制 (MVCC) 一、概述 事务的出现给并发带来了巨大的便利性,它的 ACID 特性使得数据在并发时更加可靠。但是对于事务而言,它也会导致出现第一类丢失更新、第二类丢失更新、脏读、不可重复读以及幻读的问题,当然又出现了多种... 01 月 25 日1,694评论 阅读全文
MySQL MySQL 中的行锁、两阶段锁协议以及死锁 一、行锁和两阶段锁协议 行锁:顾名思义,就是对某一行加锁,修改的时候不会锁住整个表。相对于表锁来说,行锁的开销更大 (因为涉及到 MVCC 等需要保存快照),但是粒度更小,更适合于高并发场景。行锁是每个引擎... 01 月 22 日1,247评论 阅读全文
MySQL MySQL 两种引擎的区别 一、区别 区别一:MyISAM 是非事务安全的,InnoDB 是事务安全的 事务安全的特点为更安全,遇到问题会自动恢复或从备份加事务日志回复,如果更新失败,你的所有改变都变回原来。 非事务安全的优点为更快... 05 月 04 日289评论 阅读全文