随笔分类 - 数据库
摘要:redis源码分析 一、C语言基础 本节参考资料: 1、C Primer Plus(第6版)中文版 2、stdint.h 3、编译器特性 attribute_((packed)) redis基于C语言编写,因此在阅读之前,先对C语言的相关语法进行简单回顾。 1 变量 1.1 整型 整型一般使用int
阅读全文
摘要:十六、主从 1 介绍 和Redis的主从一样,mysql主从复制能使得从mysql服务器能精确得复制主mysql服务器,即master和slave的主从数据同步,并且MySQL的复制和Redis一样默认是异步的。整个过程如图所示: master会将变动记录到二进制日志里面 master启动I/O线程
阅读全文
摘要:十五、锁 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源,当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。 1 锁分类 1.1 按操作类型分 读锁(共享锁):当用户要进行数据的读取
阅读全文
摘要:十四、SQL优化工具 1 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,运行10秒以上的SQL语句会
阅读全文
摘要:十三、索引优化 1 单表索引优化案例 准备数据: # 模拟,博客文章的数据库 CREATE TABLE IF NOT EXISTS article( id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, author_id INT(10)
阅读全文
摘要:十二、性能分析 1 SQL变慢的原因 性能下降、 SQL 慢、执行时间长、等待时间长的原因一般有: 关联查询使用太多JOIN语句 索引失效(建立了索引,但没有用到): 查询语句本身的问题 服务器调优及各个参数设置(缓冲、线程数等) 2 JOIN详解 SQL变慢的其中一个原因是使用了太多JOIN,为什
阅读全文
摘要:一、数据库概述 二、MySQL介绍和安装 三、基本使用 四、DDL 五、DQL 六、DML 七、TCL 八、DCL 九、视图 十、MySQL逻辑架构 十一、索引 十二、性能分析 十三、索引优化 十四、SQL优化工具 十五、锁 十六、主从
阅读全文
摘要:八、DCL DCL:用于定义用户的访问权限和安全级别。 1 介绍 目前为止,默认使用的都是 root 用户,超级管理员,拥有全部权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多项目的数据库,所以,我们应该根据不同的项目建立不同的用户、分配不同的权限来管理和维护数据库。 2 创建用户 语法
阅读全文
摘要:九、视图 1 介绍 MySQL 从 5.0.1 版本开始提供了视图功能。可以把它理解为一种虚拟存在的表,行和列的数据来自自定义视图的查询中使用的表,并且是在使用视图的时候动态生成的,只保存了SQL的逻辑,不保存查询结果。 视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义
阅读全文
摘要:六、DML DML:数据的插入和删除、修改。 1 插入 语法: INSERT INTO 表名(列名1,列名2,……,列名n) values(值1,值2,……,值n),(值1,值2,……,值n),……; 特点: 字段类型和值类型一致或兼容,而且一一对应 可以为空的字段,可以不用插入值,或用null填充
阅读全文
摘要:七、TCL 1 介绍 TCL:事务控制语言。 事物是由单独单元的一个或多个 SQL 语句组成,在这个单元中,每个 SQL 语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中的某条 SQL 语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始之前的状态;如果
阅读全文
摘要:五、DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块。要查询的东西可以是常量值、表达式、字段、函数等。 1 基础查询 语法: SELECT 查询列表 FROM 表名; 示例: # 查询表中的单个字段 SELECT last_name FROM empl
阅读全文
摘要:四、DDL DDL主要是库和表的管理。 1 库的基本操作 1.1 增 # 简单语法:创建数据库 CREATE DATABASE 数据库名; # 完整语法:创建数据库,指定它的默认字符集和排序规则,如果已存在则不创建 CREATE DATABASE [IF NOT EXISTS] 数据库名 DEFAU
阅读全文
摘要:三、基本使用 1 MySQL的常见命令 # 1.查看当前所有的数据库 show databases; # 2.切换到指定的库 use 库名 # 3.查看当前库的所有表 show tables; # 4.查看其它库的所有表 show tables from 库名; # 5.查看表结构 desc 表名;
阅读全文
摘要:十一、索引 1 介绍 索引(Index)是帮助MySQL高效获取数据的数据结构——索引是一种数据结构,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着
阅读全文
摘要:二、MySQL介绍和安装 1 介绍 MySQL 数据库隶属于 MySQL AB 公司,总部位于瑞典,后被 Oracle 收购。 官方网站:https://www.mysql.com/ 2 优点 成本低:开放源代码,一般可以免费使用。 性能高:执行很快。 简单:很容易安装和使用。 3 MySQL的版本
阅读全文
摘要:十、MySQL逻辑架构 1 整体架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上。 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。 整体架构如图
阅读全文
摘要:MongoDB 一、介绍 1 基本介绍 MongoDB是一个基于分布式文件存储的数据库,由C++编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它是一个面向文档(document-oriented)的数据库,而不是关系型数据库。它支持的数据结构非常松散,类似json格式,因此可以存储比较复
阅读全文
摘要:Redis其它 1 slowlog慢查询日志 redis和mysql等数据库一样,提供了慢查询日志,简单说就是redis将查询执行时间超过设定值的命令记录下来。查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。另外,slowlog
阅读全文
摘要:使用python操作Redis 安装 pip install redis 简单使用 from redis import Redis # 实例化,创建连接 conn = Redis("127.0.0.1",6379,) # 设置key conn.set("key1","123") # 取值 ret =
阅读全文