
数据库
文章平均质量分 91
bandaoyu
这个作者很懒,什么都没留下…
展开
-
【数据库】结构化数据、非结构化数据、半结构化数据的区别
林中鹿结构化数据可以通过固有键值获取相应信息,且数据的格式固定,如RDBMS data半结构化数据可以通过灵活的键值调整获取相应信息,且数据的格式不固定,如json,同一键值下存储的信息可能是数值型的,可能是文本型的,也可能是字典或者列表非结构化数据不可以通过键值获取相应信息。其实感觉也不能笼统地说文档就是非结构化数据,这要看你想要获取的信息层次,比如我就是要统计公司的财报,且把财报整体作为我的信息单元,那么在这里财报也是结构化数据;而如果我想要获取的是财报里面的具体信息,比如总收入,那么在这里财报就是非结原创 2022-06-09 10:18:22 · 3438 阅读 · 0 评论 -
【存储】什么是 WAL|数据库性能
什么是 WALWAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。「预写式日志」(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供原子性和持久性(ACID 属性中的两个)的一系列技术。在使用 WAL 的系统中,所有的修改在提交之前都要先写入 log 文件中。log 文件中通常包括 redo 和 undo 信息。这样做的目的可以通过一个例子来说明。假设一个程序在执行某些操作的过程中机器掉电了。在.转载 2022-01-08 11:30:17 · 4480 阅读 · 0 评论 -
【MySQL】聚簇索引和非聚簇索引
[数据库系统内幕]这本书中对聚簇索引的:如果数据记录的顺序遵循搜索键的顺序,则这种索引称为“聚集簇索引”。书中还详细讲解到:聚簇索引中的数据记录,通常与索引存储于同一个文件中,有时也存放在单独的聚簇文件中,而这些文件均保留了键的顺序。如果数据存储在单独的文件中,且其顺序不遵循键顺序,则索引为非聚簇索引。链接:https://www.jianshu.com/p/b72c59b61efd聚簇索引聚簇索引是一种数据的存储方式,它的数据行只存放在索引(B+树)的叶子中,内部节点不存放..原创 2020-11-11 13:11:36 · 610 阅读 · 0 评论 -
【MySQL】MySQL半同步复制
原文;https://www.cnblogs.com/ivictor/p/5735580.html从MySQL5.5开始,MySQL以插件的形式支持半同步复制。如何理解半同步呢?首先我们来看看异步,全同步的概念异步复制(Asynchronous replication)MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行..原创 2020-10-31 19:13:47 · 421 阅读 · 0 评论 -
【mySQL】MySQL索引原理及慢查询优化|慢查询日志的配置与使用教程
转自:http://blog.jobbole.com/86594/ https://tech.meituan.com/mysql-index.htmlMySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从...原创 2018-04-02 02:07:02 · 740 阅读 · 0 评论 -
【事务】CAP理论和分布式事务:两阶段提交与三阶段提交
原文:https://segmentfault.com/a/1190000012534071发布于 2017-12-21在分布式系统中著有 CAP 理论,该理论由加州大学伯克利分校的Eric Brewer教授提出,阐述了在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区容错性(Partition Tolerance)。一致性:在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。 ...原创 2020-10-14 00:56:52 · 1084 阅读 · 0 评论 -
【mySQL】MySQL JOIN原理
MySQL JOIN原理先看一下实验的两张表:表comments,总行数28856表comments_for,总行数57,comments_id是有索引的,ID列为主键。以上两张表是我们测试的基础,然后看一下索引,comments_for这个表comments_id是有索引的,ID为主键。最近被公司某一开发问道JOIN了MySQL JOIN的问题,细数之下发下我对MySQL JOIN的理解并不是很深刻,所以也查看了很多文档,最后在InsideMySQL公众号看到了两篇关于JOIN原创 2020-09-28 04:12:47 · 1009 阅读 · 0 评论 -
【树】B树(B-树)、B+树、B*树之间的关系--研读和修正|mySQL为什么用B+
目录说明树二叉搜索树B树(二叉搜索树的改进)B+树扩展为什么存储用B树而不是红黑树为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?B树的操作图解转自:https://blog.youkuaiyun.com/u013411246/article/details/81088914 -- 未消化 未验证说明B-tree...原创 2019-04-25 20:35:27 · 555 阅读 · 0 评论 -
【分布式】分布式研究
原文:https://zhuanlan.zhihu.com/p/157978714 分布式id生成策略 生成分布式Id的方法主要有以下几种:数据库水平拆分,设置初始值和相同的自增步长。 批量申请自增ID。 UUID生成。 Redis的方式。 雪花算法。 百度UidGenerator算法 美团Leaf算法 数据库水平拆分,设置初始值和相同的自增步长 「数据库水平拆分,设置初始值和相同的自增步长」 set @@auto_increme...原创 2020-08-11 01:41:55 · 376 阅读 · 1 评论 -
【数据库】clickhouse 列数据库学习记录
linux安装:https://clickhouse.tech/#quick-startsudo yum install yum-utilssudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.reposudo yum install clickhouse-se原创 2020-08-03 21:17:09 · 705 阅读 · 0 评论 -
【数据库】3分钟,golang 操作 clickhouse (docker)
安装clickhouse与使用docker pull yandex/clickhouse-server如果pull出现 docker pull yandex/clickhouse-serverUsing default tag: latestError response from daemon: Gethttps://registry-1.docker.io/v2/: net/http: TLS handshake timeout请换源。另一种方式是用dig命令然后配置host...原创 2020-07-31 20:22:42 · 4472 阅读 · 1 评论 -
【数据库】MySQL 100万条记录全表遍历---金山面试题
今天做一个业务需求的逻辑处理,需要对MySQL全表进行遍历,数据规模百万级别,为方便描述,这张表就用 a 来代替吧结合自己的思路和一些资料,在这里记录一下方案的进化史一、直接遍历拿出所有的数据select * from a ;这个肯定不用多说了,估计还没拿完,内存就爆了,对这种数量级的表不现实二、分页式循环遍历select * from a limit 0,1000;select * from a limit 1000,1000。在代码中,循环地使用这种...原创 2020-07-30 12:26:51 · 2618 阅读 · 0 评论 -
【Redis】用Redis实现微博关注关系
关注关系产生的四种关系状态关注 粉丝 双向关注(互粉) 无关系需求分析在微博中,每一个用户都会有一个关注列表,一个粉丝列表。用户可以查看自己的关注,粉丝列表,也可以查看别人的关注,粉丝列表。并且,要展示列表里每个人与当前查看者的关注状态。状态的可能性就是上面讲到得四种关系状态。问题可以分两种情况来看:1、看自己的关注、粉丝列表2、看别人的关注、粉丝列表看自己的关注、粉丝列表:这种情况相对简单一点。比如看自己的关注列表,列表里的人的与自己的关系状态不可能是“无关系”和“粉丝”原创 2020-07-11 03:21:22 · 1982 阅读 · 0 评论 -
【redis】redis缓存穿透及解决方案|缓存穿透,缓存击穿,雪崩的理解
缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,接着查询数据库也无法查询出结果,因此也不会写入到缓存中,这将会导致每个查询都会去请求数据库,造成缓存穿透;缓存访问的过程如下:(1)应用访问缓存,假如数据存在,则直接返回数据(2)数据在redis不存在,则去访问数据库,数据库查询到了直接返回应用,同时把结果写回redis(3)数据在redis不存在,数据库也不存在,返回空,一般来说空值是不会写入redis的,如果反复请求同一条数据,那么则会发生缓存穿透。.原创 2020-07-07 14:56:58 · 488 阅读 · 0 评论 -
【mysql 常见问题】Mysql 常见问题经验积累
1、ERROR 1005 (HY000):Can't createtable ?errno:121ERROR 2006 MySQL serverhas goneaway (下面操作也可引起这样的错误)原因1: 外键冲突。原因2:想当然的用把原有数据文件删除,用别的数据库的目录替换的方式把别的数据库的数据导入到自己的数据库中出现...原创 2014-06-14 22:28:49 · 299 阅读 · 0 评论 -
【mySQL】WAL和MVCC ----待消化
WAL(Write-Ahead Logging)机制MySQL 里经常说到的 WAL技术,也就是先写日志,再写磁盘。当内存数据页跟磁盘数据页内容不一致的时候,我们成这个内存页为“脏页”。内存数据写入磁盘后,内存和磁盘上的数据页内容就一致了,称为“干净页”。MySQL 从 内存更新到磁盘的过程,称为刷脏页的过程(flush)。InnoDB 刷脏页的时机: 内存中的redo log 写满了,这时系统就会停止所有更新操作,把checkoutpoint 往前推,redo log留出空间可...原创 2020-06-04 20:09:37 · 570 阅读 · 0 评论 -
【mySQL】mySQL优化笔记|mySQL配置说明
转自:https://blog.youkuaiyun.com/ZHANG_TIMI/article/details/102717319[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockbasedir = /usr/local/mysqldatadir = /data/mysqlpid-file = /data/mysql/mysql.piduser = mys...原创 2020-05-21 15:47:52 · 1666 阅读 · 1 评论 -
【mySQL】提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
转自:https://blog.youkuaiyun.com/qing_gee/article/details/42742241(作者太罗嗦了,复制好多遍)提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances。首先我们先看一下,我的电脑(i3-3220,4G内存,没有配置innodb_buffer_pool_size参数的情况下,抛开程序的性能,经过1个线程-8个线程的测试结果)环境下,大家可以看到如下的图,线程并发情况下,时间.原创 2020-05-19 16:02:11 · 1240 阅读 · 0 评论 -
【mySQL】mysql是行级锁还是表级锁
一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和...原创 2020-05-18 16:50:57 · 735 阅读 · 0 评论 -
【mySQL】比explain更加详细的分析计划:Query Profiler
比explain更加详细的分析计划:Query Profiler2019-05-10 14:47:45阅读:78来源:互联网标签:profileshowexplainsqlprofilesProfilerqueryQuery一、前言这篇博客是之前总结的一个知识点,也是偶然看别人博客的时候发现的这个东东,,也算是解析sql语句性能的利器吧,记录一哈。Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出...原创 2020-05-17 19:20:26 · 535 阅读 · 0 评论 -
【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam(mysql插入速度优化)
引擎在不断的发展(比如InnoDB发展),所以不会去记具体的特性,在选型的时候才去看和对比。简单点说。。。没啥特殊的话请使用innodb。 myisam已被放弃。简单说读操作多用MyISAM写操作多用InnoDB1、myisam查询效率更高,查询效率差myisam6-7倍。2、innodb支持事务,行锁,外...原创 2018-03-11 21:06:16 · 1840 阅读 · 0 评论 -
【Redis】Redis数据类型List的安全队列和不安全队列
目录长话短说详细长话短说不安全:RPOP命令将 消息 从队列中 移除并返回给客户端(此时队列中已经没有该消息),此时客户端崩溃,则该消息丢失。安全:RPOPLPUSH 将消息从队列source (返回给客户端同时移到队列destination中,这个过程是原子操作),当客户端成功的处理了消息后,就可以把此消息从备份destination中移除。所以即使中途崩溃,客户端重启...原创 2020-04-24 19:50:04 · 463 阅读 · 0 评论 -
【MySQL】Linux学习之CentOS7安装Mysql5.7直接覆盖Mariadb
@LiangChaoDe615在使用CentOS想要安装Mysql,如果下面的命令yum -y install mysql那么,CentOS就会为你自动安装MariaDB,虽然也是Mysql的一个分支,但我们更习惯用Mysql于是开始下面的操作:1 下载并安装MySQL官方的Yum Repository[root@localhost ~]# wge...原创 2020-04-21 15:43:45 · 645 阅读 · 0 评论 -
【mySQL】C++ 操作mySQL|mySQL++|Mysql connector c++
MySQL其实提供了C实现的接口,而MySQL++则是一个C++实现的封装MySQL C接口的一个Wrapper,遵循了标准C++的规则,是个跨平台的开源工具。我们主要用MySQL++来开发C++程序。1. 安装和配置还是万年不变的新手主题——安装和配置安装MySQL++之前需要先安装MySQL:[root@ollen mysql++]# yum install mysql...原创 2020-04-20 20:29:49 · 5894 阅读 · 0 评论 -
【数据库】时序数据库InfluxDB 性能测试和为什么时序数据库更快、时序数据库应用场景
CPU 内存 带宽 版本号 4核 16G 1Gbit/s Ubuntu 4.8.4-2ubuntu1~14.04.3 写入测试:60万/s测试结论:最大的吞吐量为每秒写入60万条数据。这之后,每秒发送的points再多,吞吐量也不会增加,同时CPU利用率已达90%。查询测试:600/s原文:https://www.yinyubo.cn/www...原创 2020-04-03 19:18:24 · 4206 阅读 · 1 评论 -
【redis】hiredis-vip (hiredis封装成支持cluster的api)
hiredis 是redis 的C 客户端接口库,hiredis-vip是它支持cluster的版本(唯品会出品)hiredis-vip:hiredis-vip是基于hiredis的(事实上,它包含一个完整的hiredis),在hiredis的基础上,提供了一套cluster版本的接口。安装: 由于hiredis-vip包含了完整的hiredis,在安装hiredis-vip之前,先卸...原创 2020-04-01 16:54:53 · 2506 阅读 · 0 评论 -
【mySQL】Mysql InnoDB 共享表空间和独立表空间 区别和优缺点
一、概念 共享表空间: Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。三、共享表空间优缺点...转载 2020-03-30 10:07:45 · 845 阅读 · 0 评论 -
【mySQL】MySQL数据库知识整理
数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。所以第三范式具有如下特征:1, 每一列不可再拆...原创 2020-03-30 10:05:53 · 1286 阅读 · 0 评论 -
【mysql】MySQL 面试,必须掌握的 8 个知识点
内容介绍对于技术面试来说,考察的核心包含以下两个特点:考察的知识点广,因为不同的公司和不同的面试官技能知识结构是不同的,所以所关注的问题和面试内容也是不同的,所以具备面试知识点广的特点;考察的知识点较深入,以阿里巴巴为例,这些大厂的面试都是类似的,通常从一个大的面试点切入,然后层层深入,直到问到你不会为止,比如,你了解哪些数据库引擎?这个数据库引擎的特点是什么?这个数据库引擎是如何存储数据...原创 2020-03-24 16:53:17 · 1556 阅读 · 0 评论 -
【mySQL】MySQL的四种事务隔离级别
本文转自:https://www.cnblogs.com/huanongying/p/7021555.html (建议去原文查看,有评论)本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,...原创 2019-12-09 11:12:14 · 591 阅读 · 0 评论 -
【redis】keepalived实现redis双主备份(keepalived + redis高可用方案搭建)
现在的生产环境基本上都采用主备方式,而如何实现redis的主备呢?一般情况下,redis实现主从复制比较简单,只需要在从服务器的配置文件里配置 "slaveof"即可。但这样存在一个问题:主服务器挂掉时,可临时将业务地址转移到从服务器,但从服务器无法进行写操作。为解决这个问题,在网上查找了一些资料。主要有以下几种方案1、使用keepalived+监控脚本实现主备切换2、使...转载 2019-11-25 20:30:16 · 2408 阅读 · 0 评论 -
【Redis】Redis 集群缓存测试要点--关于 线上 token 失效 BUG 的总结 --研读
转自:https://testerhome.com/topics/12175在测试xx系统过程中遇到了线上大面积用户登录态失效的严重问题,事后对于其原因及测试盲点做了一些总结记录以便以后查阅,总结分为以下7点,其中原理性的解释有些摘自网络。1.xx系统token失效问题复盘2.Redis 经典流程3.Redis分片部署方式4.Redis扩容导致缓存数据失效5.Redis Shard...原创 2019-11-21 22:03:10 · 397 阅读 · 0 评论 -
【redis】redis压力测试工具-----redis-benchmark
摘自:https://www.cnblogs.com/lxs1314/p/8399069.htmlredis做压测可以用自带的redis-benchmark工具,使用简单压测命令:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000压测需要一段时间,因为它需要依次压测多个命令的结果,如:get、set、incr、lpush等等,...原创 2019-11-19 15:28:20 · 1599 阅读 · 0 评论 -
【Reids】高可用Redis:Redis Cluster (原理多图讲透)
https://www.cnblogs.com/renpingsheng/p/9862485.htmlRedis Cluster是Redis官方提供的Redis集群功能1.为什么要实现Redis Cluster1.主从复制不能实现高可用2.随着公司发展,用户数量增多,并发越来越多,业务需要更高的QPS,而主从复制中单机的QPS可能无法满足业务需求3.数据量的考虑,现有服务器内存不...原创 2019-11-18 15:05:45 · 819 阅读 · 0 评论 -
【Redis 】实现Redis Cluster并实现Python链接集群
https://www.cnblogs.com/theboy/p/10690838.html目录一、Redis Cluster简单介绍 二、背景 三、环境准备 3.1 主机环境 3.2 主机规划 四、部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动Redis服务 五、构建Redis Cluster集群 5.1 ...转载 2019-11-16 15:32:36 · 738 阅读 · 0 评论 -
【Redis】redis集群搭建(非常详细,适合新手) V2
转载自:https://blog.youkuaiyun.com/qq_42815754/article/details/82912130redis集群搭建在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程下载redis压缩包,然后解压压缩文件; 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件; 把编译好的redis源文件安装...转载 2019-11-15 20:35:29 · 488 阅读 · 0 评论 -
【MYSQL】mysql把字段进行逗号分隔成多条数据
mysql把字段进行逗号分隔成多条数据,由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值(具体结构见下表)。这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果。表数据:ID Value1 tiny,small,big2 small,medium3 tiny,big期望得到结果:ID Value...转载 2019-02-25 15:45:50 · 4092 阅读 · 0 评论 -
【mySQL】mySQL动态语句(SQL语句中有变量)
动态表名列名:delimiter //create procedure oneKey(in newName varchar(250),in oldName varchar(250),in idNum INT)BEGIN SET @sqlStmt = CONCAT('insert into ',newName,' (`name`,`age`,`sex`,`major`,`pas...原创 2019-04-05 18:06:27 · 9447 阅读 · 0 评论 -
【SQL】SQL 注入攻击和预防
预防SQL攻击措施如何预防SQL注入?这是开发人员应该思考的问题,作为测试人员,了解如何预防SQL注入,可以在发现注入攻击bug时,对bug产生原因进行定位。1)严格检查输入变量的类型和格式对于整数参数,加判断条件:不能为空、参数类型必须为数字对于字符串参数,可以使用正则表达式进行过滤:如:必须为[0-9a-zA-Z]范围内的字符串2)过滤和转义特殊字符在user...原创 2019-04-06 16:00:52 · 803 阅读 · 0 评论 -
【mySQL】MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较
目录MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较mysql的日期存储字段比较int,datetime,timestamp区别MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较文章:https://www.jianshu.com/p/27c807ed6974文章2:https://blog.youkuaiyun.com/ad...原创 2019-04-12 18:11:19 · 1464 阅读 · 0 评论