数据库
文章平均质量分 94
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
MySQL的数据类型和存储引擎介绍
存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎,下面是一些常用的存储引擎,有远古时期的 MyISAM、支持事务的 InnoDB、内存类型的 Memory、归档类型的 Archive、列式存储的 Infobright,以及一些新兴的存储引擎,以 RocksDB 为底层基础的 MyRocks 和 RocksDB,和以分形树索引组织存储的 TokuDB。InnoDB 支持外键,MyISAM 不支持;原创 2022-12-23 15:01:26 · 372 阅读 · 0 评论 -
详解MySQL之事务
间隙锁,锁一定的范围,但不包含记录本身,全开区间;表级锁用户是不能更改的,因为用户在为某一行添加共享锁、排他锁时,自动在页和表上添加相关的意向共享锁,或意向排他锁,再为修改行添加共享锁或排他锁,所以表级锁、意向锁不是由程序员控制的,而是自动添加的。以上隔离级别中,写操作都会自动加X锁,对于读操作,除SERIALIZABLE会自动加S锁外,其他的隔离级别不做任何处理;锁的机制用于管理共享资源的并发访问,用来实现事务的隔离级别,也就是说事务的隔离性是通过锁实现的,在事务中锁都是在提交或者回滚后才释放。原创 2022-10-08 17:33:48 · 398 阅读 · 0 评论 -
深入理解MYSQL之缓存
在讲缓存之前先了解一下,什么是MYSQL的主从复制和读写分离。主从复制编辑添加图片注释,不超过 140 字(可选) master是主数据库,stave从数据库 (1)DML操作引起主数据库数据变更,产生binlog文件(二进制日志,在事务提交后产生),通过io-thread写入binlog;原创 2022-09-20 17:11:59 · 503 阅读 · 0 评论 -
分布式系统架构设计
业务在刚开始时都是单体应用,随着用户量和访问量的增加,在架构层面会发生变化,逐步由单体应用开发转为分布式应用开发,比如把单体应用中的每个模块都按照特定的方法拆分成一组独立的服务,服务与服务之间通过HTTP或者RPC方式调用。服务实例在启动时被加载到容器中,并将服务自身的相关信息,比如接口名称、接口版本、IP地址、端口等注册到注册中心,并使用心跳机制定期刷新当前服务在注册中心的状态,以确认服务状态正常,在服务终止时将其从注册表中删除。系统的可用性是分布式系统的重要指标,是系统容错能力的体现。...原创 2022-08-16 15:49:24 · 847 阅读 · 0 评论 -
数据仓库开发 SQL 使用技巧总结
特点多路平衡树,m 个子树中间节点就包含 m 个元素,一个中间节点是一个 page(磁盘页) 默认 16 kb;子节点保存了全部得元素,父节点得元素是子节点的最大或者最小元素,而且依然是有序得;节点元素有序,叶子节点双向有序,便于排序和范围查询。优势平衡查找树,logn 级别 crud;单一节点比二叉树元素更多,查询 io 次数更少;所有查询都要查询到叶子节点性能稳定;所有节点形成逻辑有序链表,便于排序查询范围查询。索引优化索引是提升性能主要手段,主要用到的索引基本为以下三种:聚簇索引一般表会用自增主键做聚原创 2022-07-19 14:57:49 · 600 阅读 · 0 评论 -
从零开始学 MySQL —数据库和数据表操作
上篇文章我们学习了 SELECT 语句,今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作。(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~)数据库操作:删除数据库、修改数据库。数据表操作:重命名表、删除表、指定位置增加一列数据、删除一列、重命名一列、更改数据类型、删除一行记录。本节将通过实践操作,带领大家熟悉数据库的修改和删除操作。在正式开始本实验内容之前,需要先下载相关代码。该代码可以新建两个数据库,分别名为 test 和mysql_shiya原创 2022-07-01 16:55:49 · 183 阅读 · 0 评论 -
如何保证数据库和缓存双写一致性?
数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深,跟大家一起聊聊,数据库和缓存双写数据一致性问题常见的解决方案,这些方案中可能存在的坑,以及最优方案是什么。通常情况下,我们使用缓存的主要目的是为了提升查询的性能。大多数情况下,我们是这样使用缓存的:用户请求过来之后,先查缓存有没有数据,如果有则直接返回。如果原创 2022-06-20 15:47:53 · 407 阅读 · 0 评论 -
Mysql数据库查询好慢,除了索引,还能因为什么?
mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?有哪些操作,可以提升mysql的查询能力呢?今天这篇文章,我们就来聊聊会导致数据库查询变慢的场景有哪些,并给出原因和解决方案。我们先来看下,一条查询语句下来,会经历哪些流程。比如我们有一张数据库表我们平常写的应用代码(go或C++之类的),这时候就叫客户端了。客户端底层会带着账号密码,尝试向mysql建立一条TCP长链接。m原创 2022-06-17 15:25:22 · 466 阅读 · 0 评论 -
数据库:高并发下的数据字段变更
经常会遇到这种情况,我们的业务已经稳定地运行一段时间了,并且流量渐渐已经上去了。这时候,却因为某些原因(比如功能调整或者业务扩展),你需要对数据表进行调整,加字段 or 修改表结构。 可能很多人说 alter table add column ... / alter table modify ...,轻轻松松就解决了。 这样其实是有风险的 ,对于复杂度比较高、数据量比较大的表。调整表结构、创建或删除索引、触发器,都可能引起锁表,而锁表的时长依你的数据表实际情况而定。 本人有过惨痛的教训,在一次业务上线过程中原创 2022-06-07 15:05:14 · 517 阅读 · 0 评论