数据库
文章平均质量分 87
数据库包括mysql和redis等
谢白羽
无论东西
展开
-
记录一些MySQL面试、性能和线上、测试环境问题总结(2023/10/17)
一、MySQL自增ID用完了会怎样?二、自增主键的好处和自增主键存在哪里?自增主键一定是连续的吗?三、mysql有那些锁?四、mysql的游戏邮件数据不跟据人物登录捞取引起的内存爆满五、为什么数据库字段建议设置为NOT NULL?原创 2022-09-14 00:32:33 · 373 阅读 · 3 评论 -
补充记录sql基础语法
一、distinct二、top的用法三、and和or四、group by五、having六、order by七、LIKE八、IN九、BETWEEN AND十、UNION十一、JOIN十二、SELECT INTO十三、CREATE十四、VIEW视图用法十五、约束的用原创 2022-08-25 00:29:40 · 337 阅读 · 0 评论 -
影响mysql数据的三个性能指标(TPS\QPS\IOPS)
1)IOPS2)TPS3)OPS原创 2022-08-16 17:43:20 · 2337 阅读 · 0 评论 -
MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别
数据库索引原创 2022-07-14 15:34:44 · 4813 阅读 · 0 评论 -
用redis的订阅/发布机制来做1)进程间通信、2)操作hiredis库、3)异步处理hiredis订阅
文章目录一、往1这个通道发布一条信息abc,这里是开启通道二、订阅1这个通道的信息(这里别的窗口再输入了一次redis-cli publish 1 abc)三、一些细节1)一个订阅者可以订阅多个频道(这里订阅订阅了2和3通道)2)订阅者(收消息):会一直阻塞等待新消息3)发布消息会发给所有订阅者四、hiredis库实现发布订阅1)初步的代码2)打印订阅的信息3)开启订阅,然后打印收到的发布的信息一、往1这个通道发布一条信息abc,这里是开启通道二、订阅1这个通道的信息(这里别的窗口再输入了一次redi原创 2021-11-17 01:16:09 · 1924 阅读 · 2 评论 -
MariaDB非阻塞API(翻译官方文档)
文章目录1.my_socket mysql_get_socket(const MYSQL *mysql)2.unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql)3.unsigned int STDCALL mysql_get_timeout_value_ms(const MYSQL *mysql)4.int mysql_real_connect_start ( MYSQL ** ret , MYSQL * mysql ,原创 2021-10-12 14:35:44 · 393 阅读 · 0 评论 -
soci操作数据库(soci:数据库操作的库)
文章目录1.选择soci的原因2.soci的特点3.linux安装步骤4.查询示例及查询步骤1)表结构2)初始化session3)insert插入表4)select查表5)update更新6)delete5.连接池6.事务7.ORM8.完整示例1.选择soci的原因略2.soci的特点①以stream方式输入sql语句②通过into和use语法传递和解析参数③支持连接池,线程安全备注:由此可见它只是一个轻量级的封装,因此也有更大的灵活性,后端支持oracle,mysql等,后续示例原创 2021-09-28 12:34:14 · 3817 阅读 · 2 评论 -
odb++调用mysql数据库接口(ORM)
文章目录1.odb组成部分2.使用步骤1)声明持久化的类2)生成数据库支持的代码(用安装的ODB Compiler编译Person.h得到新的)3)数据库增删改查的C++代码4)编译运行指令3.其他问题1)odb查询过程迭代器失效的问题4.安装后面可能用其他的ORM,选择soci1.odb组成部分①odb编译器:生成应用程序需要的持久化对象的代码。odb编译器是一个真正的c++编译器除了它产生的是c++代码而不是机器码。②odb运行库libodb③特定的数据库相关的链接库2.使用步骤1)声原创 2021-09-28 11:29:44 · 776 阅读 · 0 评论 -
mysql C++API介绍
文章目录1.mysql_insert_id和LAST_INSERT_ID二者作用一样,均是返回最后插入值的ID 值2. MYSQL *mysql_init(MYSQL *mysql)3. MYSQL *mysql_real_connect(MYSQL *mysql,4. int mysql_query(MYSQL *mysql, const char *stmt_str)5. MYSQL_RES *mysql_use_result(MYSQL *mysql)6. MYSQL_RES *mysql_sto原创 2021-09-23 16:08:42 · 1395 阅读 · 1 评论 -
mysql的C++代码设计遇到的坑(持续更新9/28)
文章目录mysql连接问题:①简述:Mysql网络断开重连问题,需要结合mysql_options的函数和mysql_ping函数错误原因:断开网络后重新将mysql连接释放(mysql_close(MYSQL )),并重新初始化mysql_init((MYSQL )),然后再用mysql_real_conncet()函数进行连接,但是这样做的后果是mysql_real_connect()报错,报错内容为没有足够的内存,————————————————版权声明:本文为CSDN博主「fantasyd原创 2021-09-23 11:36:37 · 260 阅读 · 0 评论 -
windows安装mysql及相关操作(未完待续9/15)
文章目录1.mysql服务器安装在windows上2.安装mysql客户端3.vs2017mysqlapi项目创建调用静态库和动态库4.linux平台的mysql准备5.mysql开发环境测试1.mysql服务器安装在windows上1)网址下载http://ffmpeg.club/mysql.html ->64位windows的mysql2)进入到bin目录下,然后输入命令mysql --initialize --console会生成临时密码3)输入密码mysql -u原创 2021-09-15 01:56:14 · 138 阅读 · 0 评论 -
数据库同步到缓存三大方案(未完待续9/11)
文章目录1.触发器1.0 触发器同步到缓存缺点:1.1 触发器定义1.2 触发器四要素1.3 触发器语法解释1.4 触发器准备(创建两个表+设定触发器:work表、time表、触发器trig_test1)1.5 触发器NEW和OLD解释1.6 触发器案例1.6.1 触发器准备(创建订单表order和创建库存表goods,根据下单的数量更新库存表)1.6.2 触发器需求11.6.2 触发器需求22.canal3.go-with-transfer数据库同步到缓存三大方案:①触发器+UDF②canal③原创 2021-09-11 17:01:49 · 650 阅读 · 0 评论 -
hiredis操作redis的函数API说明(未完待续)
文章目录一、同步函数接口1.1 redisContext *redisConnect(const char *ip, int port)1.2 void* redisCommand(redisContext *c, const char *format, ...);1.3 void freeReplyObject(void *reply);1.4 void redisFree(redisContext *c);二、异步函数接口2.0 redisAsyncContext结构体介绍2.1 建立连接redisAs原创 2021-09-03 16:15:56 · 2123 阅读 · 0 评论 -
lua学习02:redis事务与lua脚本
文章目录1.创建并修改Lua环境2.Lua环境协作组件3.EVAL命令的实现4.EVALSHA命令的实现5.脚本管理命令的实现6.脚本复制7.重点回顾1.创建并修改Lua环境2.Lua环境协作组件3.EVAL命令的实现4.EVALSHA命令的实现5.脚本管理命令的实现6.脚本复制7.重点回顾...原创 2021-09-01 09:55:20 · 269 阅读 · 0 评论 -
数据库代理服务器DBcache及部分类IM聊天服务器的功能实现
文章目录1.修改代码调试 回到对应的源码目录:比如im/server/src/db_proxy_server2.服务器服务划分必须的server部分非必须的server部分3.数据库代理服务器设计main函数主流程reactor相应流程redis缓存消息计数(单聊和群聊)未读消息机制群成员管理单聊群聊1.修改代码调试 回到对应的源码目录:比如im/server/src/db_proxy_server2.服务器服务划分必须的server部分1.login_server2.msg-server3.原创 2021-09-01 01:07:19 · 285 阅读 · 0 评论 -
redis梦魇:阻塞问题(鼠标打开图片更清晰)
文章目录原创 2021-08-23 15:55:03 · 80 阅读 · 0 评论 -
Redis的慢查询日志详解及监视器
文章目录1.慢查询日志概述2.慢查询的两个配置参数2.读取慢查询日志、获取慢日志列表长度、慢查询日志重置获取慢查询日志获取慢查询日志列表当前的长度慢查询日志重置3.慢日志输出格式4.慢日志查询建议1.慢查询日志概述1.介绍:Redis的慢查询日志负责记录超过指定执行时间的查询操作。这个执行时间并不包括I/O操作(例如,服务端和客户端之间的通信、发送应答消息,等等),它仅仅是执行命令实际需要消耗的时间(只有在命令执行的阶段,Redis才会阻塞线程,此时就不能处理其他请求了)。2.命令执行过程1)客原创 2021-08-23 15:19:40 · 2658 阅读 · 1 评论 -
redis配置参数说明
文章目录1.standalone配置说明和分析(单机配置说明)1.1 总体配置1.2 最大内存及策略1.3 aof相关配置1.4 rdb相关配置1.5 慢查询配置1.6 数据结构优化配置1.7 复制replication相关配置1.8 客户端相关配置1.9 安全相关配置2.sentinel哨兵配置(略,因为用的是集群)3.cluster配置说明和分析4.info系统状态说明1.standalone配置说明和分析(单机配置说明)1.1 总体配置补充:1)watchdog-period已被移除原创 2021-08-23 14:07:10 · 956 阅读 · 0 评论 -
redis一些有趣的问题(我觉得有用的)--加深redis的理解
文章目录1.redis占用内存大概的数据量是多少2.Background saving fails with a fork() error under Linux even if I have a lot of free RAM!(在有很多内存容量的时候,后台用fork保存数据会返回错误怎么办?涉及到linux分配管理内存机制)3.redis用完内存会发生什么4.redis是单线程的,如何利用多个CPU/内核?5.redis一个实例最大能存多少数据量6.redis的名字寓意是啥?7.redis怎么发音?r原创 2021-08-20 14:12:41 · 130 阅读 · 0 评论 -
在Linux系统对redis的优化
文章目录一. 内存分配控制二. swappiness三. Transparent Huge Pages四. OOM killer五. 使用NTP六. ulimit七. TCP backlog一. 内存分配控制二. swappiness三. Transparent Huge Pages四. OOM killer五. 使用NTP六. ulimit七. TCP backlog...原创 2021-08-19 20:19:38 · 716 阅读 · 0 评论 -
针对redis大量插入键值对的情况-官方redis建议-mass insertion(用redis的协议或用管道pipeline)
文章目录1.Use the protocol, Luke2.Generating Redis Protocol3.How the pipe mode works under the hood官方链接1.Use the protocol, Luke1.首选方式是生成包含 Redis 协议的文本文件,以原始格式调用插入所需数据所需的命令例如:如果我需要生成一个大型数据集,其中表单中有数十亿个密钥:“keyN-> ValueN”,我将创建一个文件,其中包含 Redis 协议格式中的以下命令:原创 2021-08-18 18:23:35 · 363 阅读 · 0 评论 -
redis对于posix信号的处理
文章目录1.Handling of SIGTERM and SIGINT(signals to tell Redis to shutdown gracefully)2.Handling of SIGSEGV, SIGBUS, SIGFPE and SIGILL(redis crash)3.What happens when a child process gets killed(当子进程被杀,会发生什么事情)4.Killing the RDB file without triggering an error原创 2021-08-18 17:14:22 · 135 阅读 · 0 评论 -
redis命令大集锦
文章目录1.redis keys 命令:2.redis 字符串string命令3.redis hash命令4.redis list命令5.redis set命令6.sorted set命令命令分类1.redis keys 命令:1 DEL key该命令用于在 key 存在时删除 key。 2 DUMP key序列化给定 key ,并返回被序列化的值。3 EXISTS key检查给定 key 是否存在。4 EXPIRE key seconds为给定 key 设置过期时间,以秒计。5原创 2021-08-16 19:33:23 · 271 阅读 · 0 评论 -
redis的坑:常见命令、数据持久化、主从库同步三方面的坑(鼠标左键打开图片更清晰)
文章目录1.常见命令的坑2.数据持久化的坑3.主从库同步的坑主题目录1.常见命令的坑2.数据持久化的坑3.主从库同步的坑原创 2021-08-16 19:11:10 · 105 阅读 · 0 评论 -
Redis内存分析工具(RDR)的用途和配置步骤
文章目录1.下载rdr-windows.exe文件下载链接2.将这个文件放到与Redis的dump文件同一个目录下3.cmd窗口进入这个目录下,输入命令(rdr-windows.exe show -p 8081 dump.rdb) 如果多个dump,空格输入就可以,端口号可以自己定义,注意要使用的端口不要被本机已经占用,本机直接访问这个端口就可以了注:cmd窗口在端口命令之后不可以关闭,关闭后就访问不到这个不会及时更新,如果redis有对key变化数据的话,需要重新敲击命令才可以看到原创 2021-08-13 14:30:31 · 1738 阅读 · 0 评论 -
RedisInsight在linux下的安装步骤及效果展示:专门用来监控redis数据
文章目录1.Download RedisInsight2.Install RedisInsight3.Start RedisInsight4.Connect to Redis database5.Run the Redis CLI万能的后端。。。。RedisInsight的作用:Memory Overview 总览看用到了多少内存Keyspace Summary 总共存了多少key值Recommendations 峰值的qps有多少,网络峰值输出/输出各多少Memory Analyze原创 2021-08-13 14:25:22 · 2278 阅读 · 0 评论 -
centos防火墙配置:打开8001端口给redis的工具RedisInsight做准备
文章目录1.简述2.firewalld基本使用3.配置防火墙3.1 基本配置3.2 开放/封闭端口和服务1.简述CentOS7中对防火墙服务进行了改进,使得对系统防火墙的管理操作与之前的版本相比发生了变化。防火墙服务的服务名为 firewalld。相关操作适用于 RED HAT 系各发行版系统。systemctl 是CentOS7的服务管理工具中主要的工具,它融合之前的service和chkconfig的功能于一体。2.firewalld基本使用对防火墙的配置使用命令 firewall-cm转载 2021-08-13 12:33:23 · 1000 阅读 · 0 评论 -
用memtier-benchmark测试Redis集群版性能
文章目录一、memtier-benchmark安装步骤法一法二二、memtier-benchmark测试命令说明及常用测试选项2.1 连接和通用选项2.2 测试选项2.3 对象选项2.4 导入数据选项2.5 测试键选项2.6 等待选项三、伪随机数据、高斯访问模式和范围操作3.1 伪随机数据3.2 高斯访问模式(也叫正态分布)3.3 范围操作四、测试用例展示4.1 定制测试4.2 快速测试五、redis-benchmark和memtier_benchmark的差异一、memtier-benchmark安装步原创 2021-08-11 14:59:41 · 2738 阅读 · 0 评论 -
redis持久化:rdb快照和aof使用和区别,优点和缺点(内附redis持久化官方传送门在开头)
文章目录1.rdb1.1 rdb执行流程rdb持久化方式一rdb持久化方式二1.2 rdb文件结构1.2.1 整体文件结构(rdb文件结构)1.2.2 键的保存形式1.2.3 值的保存形式1.2.4 rdb实例2.aof2.1 aof执行流程(通过写入缓冲区+把缓冲区数据的内容写入一个文件这两个步骤实现aof)2.1.1 aof命令同步2.1.2 aof文件写入(write+fsync:write写文件到内核的缓冲区,fsync把数据从内核缓冲区写到硬盘)2.2 aof重写和aof触发方式2.2.1 aof原创 2021-08-06 19:41:25 · 718 阅读 · 0 评论 -
redis的主从搭建、哨兵sentinel搭建、集群搭建
文章目录0.首先查下ip,linux查ip地址命令是ifconfig1.搭建主从1.1 创建一个master-slave文件夹,cd到这个文件夹,然后创建三个子文件夹:redis11、redis12、redis131.2 复制redis-server到每个子文件夹1.3 复制redis-cli到master-slave主文件夹1.4 往子文件夹放入配置文件1.5 写linux脚本文件1.6 启动用ps -elf|grep redis看主从的进程1.7 主从缺点展示2.搭建哨兵sentinel模式2.1 修改原创 2021-08-06 11:41:24 · 191 阅读 · 0 评论 -
redis集群搭建及管理命令
文章目录1.集群的搭建1.1 快速搭建集群1) 首先,我们可以通过执行start命令来创建出6个节点,这6个节点的IP地址都为本机,而端口号则为30001~30006:2)接着,我们需要使用create命令,把上述6个节点组合成一个集群,其中包含3个主节点和3个从节点:3)在成功构建起集群之后,我们就可以使用客户端来连接并使用集群了.4)转向5)最后,在使用完这个测试集群之后,我们可以通过以下命令关闭集群并清理各个集群节点的相关信息:1.2 手动搭建集群1.2.1 自动和手动搭建集群的优缺点1.2.2 手动原创 2021-08-04 19:44:56 · 1006 阅读 · 0 评论 -
redis命令及性能分析(8/17未完待续,已完成string、set、hash、list总结)
文章目录1.连接redis服务1.1 本地redis服务redis-cli1.2 redis服务器不在本地redis-cli -h 127.0.0.1 -p 6379-h <hostname> server hostname(default:127.0.0.1)-p <port> server port(default: 6379)2.数据结构及其命令2.1 字符串string2.2 散列hash2.3 列表list2.4 集合set2原创 2021-08-04 14:31:40 · 820 阅读 · 0 评论 -
redis极限性能压榨(十六种方法)(鼠标打开图片更清晰)
文章目录1.测试服务器性能2.避免使用复杂度过高的命令3.操作bigkey4.大量key集中过期5.实例内存达到上限(选择内存淘汰机制)6.fork耗时严重7.关闭内存大页8.开启AOF数据持久化导致的问题(选择合适的备份机制)9.绑定CPU10.使用Swap(如无必要,能不用swap就不用,一般是修改最大内存值maxmemory)11.碎片整理(不加快redis效率,而且有可能拖累redis效率)12.网络带宽过载(无用)13.合并多个指令请求和避免操作大量数据集合14.减少回收key来提升数量补充:有原创 2021-08-03 20:07:07 · 480 阅读 · 0 评论 -
redis性能测试
文章目录1.查看性能1)查看实例60秒内最大响应延迟2)查看一段时间内redis的最小、最大、平均访问延迟3)精简测试4)pipeline测试(通过 Redis pipeline 功能,批量提交命令给 Redis Server ,从而提升性能)5)快速测试6)随机key测试2.redis监控1)Ping 判断客户端和服务器连接是否正常2)redis-cli info 获得 Redis 系统的状态报告1.查看性能1)查看实例60秒内最大响应延迟redis-cli -h 127.0.0.1 -p 6379原创 2021-08-03 19:09:06 · 3368 阅读 · 0 评论 -
InnoDB和MyISAM的联系和区别浅谈
文章目录0.数据库总体图片:1.两者的差别2.相同点3.MyISAM4.InnoDB5.如何选择0.数据库总体图片:1.两者的差别1)InnoDB 支持事务,MyISAM 不支持,对于 InnoDB 每一条 SQL 语句都默认封装成事务进行提交,这样就会影响速度,优化速度的方式是将多条 SQL 语句放在 begin 和 commit 之间,组成一个事务;2)InnoDB 支持外键,而 MyISAM 不支持。3)MyISAM 中 B+ 树的数据结构存储的内容是实际数据的地址值,它的索引和实际数据原创 2021-07-26 14:34:33 · 95 阅读 · 0 评论 -
索引失效简单总结
文章目录1.索引失效定义2.列与列对比3.存在NULL值条件4.NOT条件5.LIKE通配符6.条件上包括7.复合索引前导列区分大8.数据类型的转换9.谓词运算10.MySQL中使用IN会不会走索引12.在where后使用or,导致索引失效(尽量少用or)13.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引14.DATE_FORMAT()格式化时间,格式化后的时间再去比较,可能会导致索引失效。15.7. 对于order by、group by 、 union、 distinc 中原创 2021-07-20 20:02:28 · 776 阅读 · 0 评论 -
分库分表的简单了解
文章目录1.分库分表是什么方案1:服务器硬件能力方案2:2.垂直分表1)垂直分表介绍2)垂直分表作用3)垂直分表总结4)垂直分表策略3.垂直分库0)垂直分表的不足:1)垂直分库核心:2)垂直分库带来的提升是:4.水平分库1)水平分库要点2)水平分库提升5.水平分表1)水平分表特点2)水平分表提升点6.总结1.分库分表是什么下边以电商系统中的例子来说明,下图是电商系统卖家模块的表结构:通过以下SQL能够获取到商品相关的店铺信息、地理区域信息:SELECT p.*,r.[地理区域名称],s.[店铺原创 2021-07-20 17:35:30 · 134 阅读 · 0 评论 -
Mysql调优的顺序及面试问题总结
文章目录1.第一步:本地explain+线上查询遇到的第一个坑:遇到的第二个坑:2.第二步:覆盖索引3.第三步:联合索引4.第四步:最左匹配原则5.第五步:索引下推6.唯一索引普通索引选择难题7.第七步:前缀索引8.第八步:条件字段函数操作9.第九步:防止类型隐式转换10.第十步:隐式字符编码转换11.第十一步:flush1.第一步:本地explain+线上查询在开发涉及SQL的业务都会去本地环境跑一遍SQL,用explain去看一下执行计划,看看分析的结果是否符合自己的预期(type是否为eq_re原创 2021-07-16 16:18:52 · 447 阅读 · 1 评论 -
sql的预编译
文章目录1.PreparedStatement为什么能在一定程度上防止SQL注入?2.举例不使用预编译3.使用预编译后1.PreparedStatement为什么能在一定程度上防止SQL注入?PreparedStatement会对SQL进行了预编译,在第一次执行SQL前数据库会进行分析、编译和优化,同时执行计划同样会被缓存起来,它允许数据库做参数化查询。在使用参数化查询的情况下,数据库不会将参数的内容视为SQL执行的一部分,而是作为一个字段的属性值来处理数据库执行sql语句可以理解为按照关键字来编转载 2021-06-29 15:17:56 · 3824 阅读 · 2 评论 -
数据库与连接池
文章目录1.数据库不用连接池的情况2.数据用了连接池的情况3.数据库与连接池的原理是一样的1)redis连接池举例2)通过池化计数管理多个连接3)mysql连接池举例4.怎么创建连接池1)创建连接,2)创建的连接要用什么管理,需要容器,比如list3)提供对外接口,请求连接4)归还连接5)连接池的名字6)其他补充1.数据库不用连接池的情况2.数据用了连接池的情况3.数据库与连接池的原理是一样的1)redis连接池举例①mysql和redis连接池的原理都是一样的②例如输入一个语句se原创 2021-06-22 22:37:25 · 324 阅读 · 1 评论