【数据库】
文章平均质量分 84
数据库与SQL
rtoax
行百里者半九十
展开
-
图解tcmalloc内存分配器
目录前言如何分配定长记录?如何分配变长记录?大的对象如何分配?Span如何分配?从Page到SpanPageHeap全局对象分配ThreadCache总结参考推荐阅读前言TCMalloc是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征:对抗内存碎片、在多核处理器能够 scale。据称,它的内存分配速度是 glibc2.3 中实现的 malloc的数..转载 2020-11-24 21:43:34 · 502 阅读 · 1 评论 -
将redis当做使用LRU算法的缓存来使用
http://www.redis.cn/topics/lru-cache.html目录Maxmemory配置指令回收策略回收进程如何工作近似LRU算法当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括了Redis使用的LRU算法,这个实转载 2021-07-11 17:54:04 · 316 阅读 · 0 评论 -
TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比
目录动机用法总览小对象分配大对象分配跨度解除分配小型物品中央free清单线程缓存的垃圾收集性能说明PTMalloc2单元测试注意事项Paul Menage的Sanjay Ghemawat <opensource@google.com>动机TCMalloc比我测试过的glibc 2.3 malloc(可称为ptmalloc2的独立库)和其他malloc更快。ptmalloc2在2.8 GHz P4上(用于小型对象)执行malloc .翻译 2020-11-24 22:08:21 · 1527 阅读 · 2 评论 -
Redis基准测试火焰图 | 附 svg矢量图
资源:https://download.csdn.net/download/Rong_Toa/21476572相关文章《CentOS 7 Linux实时内核下的epoll性能分析后续 | 火焰图分析》redis基准测试过程redis正常运行过程脚本:#!/bin/bash# 荣涛 2021年4月14日FLAMEGRAPH_ROOT=/work/workspace/FlameGraph-1.0/function record() { pid=$1..原创 2021-08-24 09:28:56 · 418 阅读 · 0 评论 -
Redis的碎片整理功能只有在使用jemalloc的时候才支持
《内存分配器ptmalloc,jemalloc,tcmalloc调研与对比》《ptmalloc、tcmalloc与jemalloc内存分配器对比分析》在编译过程使用宏HAVE_DEFRAG 来决定是否使用内存碎片整理,但是这里的整理不是对所有的内存分配器都支持,当宏定义HAVE_DEFRAG 在编译过程中被定义时,activeDefragCycle函数体才不为空,/* Perform incremental defragmentation work from the serverCr...原创 2021-03-23 10:03:41 · 682 阅读 · 0 评论 -
tcmalloc内存分配器分析笔记:基于gperftools-2.4
目录一. SizeMap二. 线程缓存ThreadCacheThreadCache的实现1. 内存分配2. 内存释放三. 中央缓存Central CacheCentralFreeList的实现1.TCEntry tc_slots_[kMaxNumTransferEntries]2.Span nonempty_3. Span empty_4. Span5. CentralFreeList内存分配6. CentralFreeList内存释放...转载 2020-11-28 16:24:37 · 929 阅读 · 0 评论 -
TCMalloc内存分配器如何减少内存碎片?
目录前言什么是内存碎片?内存碎片-Freelist内存碎片-Segregated-Freelist内存碎片-Buddy-System内存分配算法的比较TCMalloc的内存碎片TCMalloc的外部碎片size-class的合并size到size-class总结参考推荐阅读前言前文说到 TCMalloc 的基本原理,ThreadCache、PageHeap、PageMap之类的,有了这些组件,基本算的上一个现代化的内存分配器了。但对于 TCM.转载 2020-11-24 22:45:53 · 514 阅读 · 2 评论 -
ptmalloc、tcmalloc与jemalloc内存分配器对比分析
目录背景介绍ptmalloc系统向看ptmalloc内存管理用户向看ptmalloc内存管理线程中内存管理Chunk说明tcmalloc系统向看tcmalloc内存管理用户向看tcmalloc内存管理tcmalloc的优势jemalloc系统向看jemalloc内存管理用户向看jemalloc内存管理jemalloc的优势总结文献资料推荐阅读参考链接背景介绍在开发微信看一看期间,为了进行耗时优化,基础库这层按照惯例使用tc.转载 2020-11-24 22:22:28 · 1465 阅读 · 6 评论 -
Redis主从复制原理
目录1 依赖机制1.1 更新 slave1.2 部分重同步1.3 全量重同步2 Redis 复制的特点3 单机“危机”3.1 主从复制作用3.2 总结4实现复制的操作4.1 命令:slaveof4.2 配置5 全量复制5.1 全量复制开销5.2 全量同步细节6 增量复制在Redis复制的基础上(不包括Redis Cluster、Redis Sentinel),使用和配置主从复制非常简单,能使得【从Redis服务器】(后文称 slave)能精确.转载 2021-05-15 14:49:30 · 136 阅读 · 1 评论 -
内存分配器ptmalloc,jemalloc,tcmalloc调研与对比
内存分配器ptmalloc,jemalloc,tcmalloc调研与对比rtoax2020年12月1. 概述内存管理不外乎三个层面,用户程序层,C运行时库层,内核层。allocator 正是值C运行时库的内存管理模块, 它响应用户的分配请求, 向内核申请内存, 然后将其返回给用户程序。为了保持高效的分配, allocator 一般都会预先分配一块大于用户请求的内存, 并通过某种算法管理这块内存. 来满足用户的内存分配要求, 用户 free 掉的内存也并不是立即就返回给操作系统, 相反, allo原创 2020-12-05 15:23:22 · 4185 阅读 · 9 评论 -
Redis zset(ziplist,skiplist)内部实现
目录Redis对象对象编码zset介绍skiplist介绍skiplist与平衡树、哈希表的比较参考:Redis对象Redis对象由redisObject结构体表示。typedef struct redisObject { unsigned type:4; // 对象的类型,包括 /* Object types */ unsigned encoding:4; // 底部为了节省空间,一种type的数据,可以采用不同的存转载 2021-05-15 14:36:37 · 1288 阅读 · 1 评论 -
Redis 的 Sentinel哨兵介绍与源码分析(1):初始化部分
http://www.redis.cn/topics/sentinel.htmlredis-6.0.8本文是在官方中文文档的基础上进行的源码分析,其中包含完整的原文,并在此基础上,添加源码介绍。目录获取 Sentinel启动 Sentinel配置 Sentinel主观下线和客观下线每个 Sentinel 都需要定期执行的任务自动发现 Sentinel 和从服务器Sentinel APISentinel 命令发布与订阅信息故障转移Sentinel 自动故原创 2021-03-24 22:37:02 · 650 阅读 · 1 评论 -
Redis 多线程网络模型
作者:allanpan,腾讯 IEG 后台开发工程师,公众号:远赴星辰。目录导言Redis 有多快?Redis 为什么快?Redis 为何选择单线程?Redis 真的是单线程?Redis 多线程网络模型总结导言在目前的技术选型中,Redis 俨然已经成为了系统高性能缓存方案的事实标准,因此现在 Redis 也成为了后端开发的基本技能树之一,Redis 的底层原理也顺理成章地成为了必须学习的知识。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说.转载 2021-03-07 21:31:54 · 647 阅读 · 2 评论 -
the little Redis book
目录About This BookLicenseAbout The AuthorWith Thanks ToLatest VersionIntroductionGetting StartedOn WindowsOn *nix and MacOSXRunning and Connecting to RedisRedis DriversChapter 1 - The BasicsThe Building BlocksDatabasesCommands,原创 2021-02-23 11:06:20 · 669 阅读 · 13 评论 -
MongoDB 教程 | 菜鸟教程
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。转载 2020-09-27 21:01:07 · 6904 阅读 · 2 评论 -
Redis缓存持久化:RDB持久化和AOF持久化
突然挂了!Redis缓存都在内存中,这下完了!来源 | 编程技术宇宙作者 | 轩辕之风O我是Redis,一个叫Antirez的男人把我带到了这个世界上。“快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。慢慢睁开眼睛,原来旁边是MySQL大哥。“我怎么睡着了?”“嗨,你刚才是不是出现了错误,整个进程都崩溃了!害得一大堆查询请求都给我怼过来了!”MySQL说到。刚刚醒来,脑子还有点懵,MySQL大哥扶我起来继续工作。“糟了!我之前缓存的数据全都不见了!”“WTF?你没有做持久化吗?”My转载 2020-09-22 12:51:27 · 222 阅读 · 10 评论 -
Redis与MySQL的双剑合璧,一文读懂redis
还不懂Redis?看完这个故事就明白了!RedisRedis(Remote Dictionary Server)的诞生,跟关系数据库MySQL还挺有渊源的。MySQL使用中,有一大半的用户请求都是读操作,而且经常都是重复查询一个东西,浪费它很多时间去进行磁盘I/O。是不是可以学学CPU,给数据库也加一个缓存呢?于是redis就诞生了!并和MySQL成为了好朋友,常常携手出现在后端服务器中。应用程序们从MySQL查询到的数据,在redis登记一下,后面再需要用到的时候,就先找我要,我这里没有再找My转载 2020-09-16 09:01:54 · 456 阅读 · 0 评论 -
Redis与Memcached的对比
转自:Redis和Memcached的恩怨情仇近些年来各路KV缓存强势崛起,尤其Redis一骑绝尘,很多新进的程序员可能都没听说过Memcached,还有很多老程序员觉得Memcached不行:功能少,不持久化,高可用差,但事实并非如此,本文将对Redis和Memcached进行对比看看Memcached是不是真的”一无是处“了下面我们来看一个场景业务同学A:你好,我申请了一个20G,100000 QPS的Memcached,麻烦审批下?业务同学B:hello,请问什么时候用Redis?什么时候用M原创 2020-09-16 08:40:00 · 602 阅读 · 2 评论 -
MySQL高阶面试题
目录1. 能说下myisam 和 innodb的区别吗?2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?3. 那你知道什么是覆盖索引和回表吗?4. 锁的类型有哪些呢5. 你能说下事务的基本特性和隔离级别吗?ACID6. 那ACID靠什么保证的呢?7. 那你说说什么是幻读,什么是MVCC(多版本并发控制:数据在某个时间节点的快照)?8. 那你知道什么是间隙锁吗?9. 你们数据量级多大?分库分表怎么做的?10. 那分表后的ID怎么保证唯一性的呢?11.转载 2020-11-05 22:12:38 · 751 阅读 · 2 评论 -
Memcached 教程 | 菜鸟教程
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。转载 2020-10-11 20:17:18 · 917 阅读 · 0 评论 -
关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)
关系型数据库遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),而Nosql数据库遵循BASE原则(基本可用(Basically Availble)、软/柔性事务(Soft-state)、最终一致性(Eventual Consistency))。关系型数据库通常有SQL Server,Mysql,Oracle。主流的Nosql数据库有redis,memcache,MongoDb。原创 2020-10-11 19:45:16 · 4031 阅读 · 12 评论 -
面向初学者的图形数据库:为什么我们需要NoSQL数据库,ACID与BASE的解释说明
NoSQL数据库是生活中的那些东西,都无助地定义一个只有它们是什么不是,而不是由他们什么是,即防定义。NoSQL是不只是SQL的厚脸皮缩写,或者更是对抗性的,是SQL的否定。这种反定义向您介绍了NoSQL运动开始的原因:基于SQL的关系数据库并不总是足够的。关系数据库(RDBMS)仍然有其完美的用例,RDBMS经常可以与NoSQL数据库一起很好地利用两种技术的优势。(这就是Neo4j正式选择不仅仅将SQL作为NoSQL的定义的原因,因为SQL仍然在任何后端中都有它的位置。)但是,仍然很清楚,关系数据原创 2020-10-11 15:33:07 · 710 阅读 · 0 评论 -
MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库
MongoDB是一个跨平台的,面向文档的数据库,可提供高性能,高可用性和易扩展性。MongoDB致力于收集和文档的概念。原创 2020-10-01 19:26:54 · 935 阅读 · 2 评论 -
分布式锁原理及实现
Table of Contents什么是分布式锁?分布式锁也是锁什么时候需要使用分布式锁这时候就可以知道分布式锁需要做哪些工作了使用场景一、基于数据库实现分布式锁基于数据库表乐观锁悲观锁二、基于Zookeeper实现分布式锁三、基于缓存实现分布式锁三种方案的比较从理解的难易程度角度(从低到高)从实现的复杂性角度(从低到高)从性能角度(从高到低)从可靠性角度(从高到低)什么是分布式锁?控制分布式架构中多个模块访问的优先级要介绍分.转载 2020-09-05 22:08:28 · 272 阅读 · 1 评论 -
分布式事务的特征、原理、以及常见3种解决方案
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务各方面与大家进行介绍。事务1.1 什么是事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性:原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么...转载 2020-09-05 21:55:54 · 652 阅读 · 3 评论 -
Redis架构图-1
图片来源于网络,侵删。原创 2020-08-10 18:49:35 · 348 阅读 · 0 评论 -
Redis概念与架构
Redis Enterprise集群由部署在数据中心内或跨本地可用性区域延伸的相同节点组成。Redis Enterprise架构由管理路径(如下图1的蓝色层所示)和数据访问路径(如下图1的红色层所示)组成。管理路径包括集群管理器,代理和用于程序管理的安全REST API / UI。简而言之,集群管理器负责编排集群,放置数据库分片以及检测和缓解故障。代理有助于扩展连接管理。 数据访问路径由主Redis碎片和从属Redis碎片组成。客户端在主分片上执行数据操作。主碎片使用内存复制来维护从碎片,以防止...翻译 2020-08-10 17:30:23 · 286 阅读 · 3 评论 -
Redis架构概述
目录什么是内存中的键值存储Redis与DBMS相比的优缺点Redis单实例架构Redis持久性Redis数据存储的备份和恢复Redis复制Redis复制中的持久性Redis中的聚类集群中的持久性群集和复制在一起Redis客户端Redis是一个内存中的键值数据存储。Redis是最流行的键值数据存储。世界上所有大型IT品牌都在使用Redis。Amazon Elastic Cache支持Redis,这使Redis非常强大,并且必须知道键值数据存储。在这篇文章中,我将翻译 2020-08-10 17:09:36 · 1916 阅读 · 3 评论 -
MySql基本操作教程
一、MySQL数据库的安装1.Windows下的安装2.Linux下的安装3.MAC下的安装二、开始使用MySQL数据库0.简单理解MySQL数据库1.在命令行中进入MySQL数据库2.查看已有的数据库3.创建自己的数据库4.选择要操作的数据库5.在数据库中创建数据库表6.MySQL数据库、数据库与数据库表三、操作数据库中的数据库表1.向数据表中添加数据(1)关于列名称(2)关于数据类型(3)关于not null(4)关于primar...原创 2020-05-24 21:38:52 · 595 阅读 · 1 评论 -
linux环境C语言操作数据库
在实际应用中,我们不可能在命令行登录进数据库进行数据的查询、插入等操作,用户一般是使用一个界面良好的应用程序软件来对数据进行管理。为了方便应用程序的开发,MySQL提供了多种编程语言(C、perl、php等)的编程接口,供开发者使用。 对于C语言来说,MySQL提供了C语言客户机库,它允许从任何C程序的内部访问MySQL数据库,客户机实现API,API定义了客户机如何建立和执行与服务器的通信。使用C语言开发MySQL项目具有更好的安全性和性能,C语言API是与MySQL...原创 2020-05-24 21:37:31 · 506 阅读 · 0 评论 -
Redis: key-value存储系统
Redis 教程REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets...转载 2020-05-24 17:09:59 · 1119 阅读 · 0 评论 -
网站 数据库
https://www.runoob.com/hosting/host-databases.htmlTable of Contents网站数据库网站数据库使用 SQL 语言SQL ServerOracleMySQLAccess网站数据库MS SQL Server 或者 Oracle 用于高流量的数据库驱动型网站。MySQL用于低成本的数据库访问。...转载 2019-11-10 21:29:09 · 289 阅读 · 0 评论 -
RDBMS即关系数据库管理系统(Relational Database Management System)
[RDBMS]https://baike.baidu.com/item/RDBMS/1048260?fr=aladdin#ref_[1]_57768RDBMS即关系数据库管理系统(Relational Database Management System),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle、SQL Server等。...转载 2018-06-10 15:23:51 · 10832 阅读 · 1 评论 -
GitHub#SQL#:SQL必知必会
一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。SQL 语句不...转载 2018-05-09 13:44:33 · 1246 阅读 · 1 评论 -
PostgreSQL 常用函数
Table of ContentsPostgreSQL 常用函数数学函数三角函数列表字符串函数和操作符类型转换相关函数PostgreSQL 常用函数PostgreSQL 内置函数也称为聚合函数,用于对字符串或数字数据执行处理。下面是所有通用 PostgreSQL 内置函数的列表:COUNT 函数:用于计算数据库表中的行数。 MAX 函数:用于查询某一特定列中最...转载 2019-12-22 20:02:42 · 2166 阅读 · 0 评论 -
PostgreSQL的登录、创建用户、数据库并赋权
Table of Contents一、在默认配置条件下,本机访问PostgreSQL二、创建新用户来访问PostgreSQL1、如上所述,先切换到Linux用户postgres,并执行psql:2、创建数据库新用户,如 test:3、创建用户数据库,如testdb:4、将testdb数据库的所有权限都赋予test:5、使用命令 \q 退出psql:6、创建Linux...转载 2019-03-30 19:39:27 · 56327 阅读 · 9 评论 -
Linux下PostgreSQL的安装和配置
Table of Contents一、在CentOS上安装PostgreSQL数据库1.使用yum安装postgresql2.初始化postgresql数据库2.启动postgresql服务3.查看postgresql的服务状态二、连接PostgreSQL数据库1.切换的postgres用户,并连接数据库2.列出所有的数据库3.退出数据库三...原创 2019-03-16 13:40:50 · 1896 阅读 · 0 评论 -
PostgreSQL C tutorial
Table of ContentsAbout PostgreSQL databaseInstallationStarting and stopping PostgreSQLCreating a user and a databaseC99The libpq librarylib_version.cServer versionserver_version.cA...原创 2019-03-14 22:37:55 · 548 阅读 · 0 评论 -
ZetCode
http://zetcode.com/ZetCode brings tutorials for programmers in various areas. The main are Graphical User Interfaces, databases, and programming languages. The website's mission is to provide compet...原创 2019-01-14 21:38:59 · 662 阅读 · 1 评论 -
在windows下配置PostgreSQL
安装PostgreSQL在Windows下的安装就位无脑安装,选择好安装路径就好了,我的安装目录为D:\PostgreSQL\10,需要注意一下几点:安装过程中需要一个数据库的目录,我的为D:\PostgreSQL\10\data;安装后在安装目录总会有一个环境变量的文件pg_env.bat,这个文件中的内容为:@ECHO OFFREM The script sets environment v...原创 2018-06-11 15:02:45 · 3933 阅读 · 0 评论