随笔分类 -  DB存储

摘要:内容主要来自下面的链接:MySQL:互联网公司常用分库分表方案汇总! 一、为什么要分库分表: SQL执行效率:单表达到了几千万,甚至亿级的规模,即使通过索引来查询都很慢。 数据存储:如果数据库里有很多的表,数据量都很大,服务器的存储空间几乎耗尽。 机器负载:8核16G的机器部署的数据库,一般TPS不 阅读全文
posted @ 2022-03-03 08:46 Diamond-Shine 阅读(353) 评论(0) 推荐(0) 编辑
摘要:一、事务的ACID: 1、Atomic:原子性 多条SQL执行,要么一起成功,要么一起失败,执行状态保持一致。 2、Consistency:一致性 一组SQL执行之前,数据必须是准确的,执行之后,数据也必须是准确的。 必须符合逻辑计算。 3、Isolation:隔离性 多个事务在执行的时候不能互相干 阅读全文
posted @ 2022-01-09 09:27 Diamond-Shine 阅读(146) 评论(0) 推荐(0) 编辑
摘要:设计一个关系型数据库,也就是设计RDBMS(Relational Database Management System),这个问题考验的是对RDBMS各个模块的划分, 以及对数据库结构的了解。只要讲述基本模块设计思路就可以了,当然如果你能讲的比较细更好。 基本机构: 文件存储系统: 对数据库对重要的 阅读全文
posted @ 2019-08-11 14:44 Diamond-Shine 阅读(810) 评论(0) 推荐(0) 编辑
摘要:有些时候,为了保证数据的完整性,我们会选择的使用外键约束,例如教师对应的表和课程表中老师的id,这种时候就要使用外键约束了。 PS:这里不考虑表结构设计,三范式与反范式等设计问题,基于MySQL8.0 语法: constraint可以省略,只是用来指定外键名 例如: 或者通过alter添加: PS: 阅读全文
posted @ 2019-07-10 18:25 Diamond-Shine 阅读(5882) 评论(0) 推荐(2) 编辑
摘要:本文基于MySQL8.0,记录一下完整的远程访问的过程,以及这个过程中可能遇到的问题,MySQL运行在阿里云服务器,操作系统:CentOS 7.6 64位 顺便说下,买服务器还是要双十二这种拉新活动再买,用一个新的支付宝账号购买,能便宜一大半,不然双核4G就两千多块了。 这里默认防火墙已经向外暴露3 阅读全文
posted @ 2019-07-10 11:29 Diamond-Shine 阅读(752) 评论(0) 推荐(0) 编辑
摘要:InnoDB在MySQL5.6版本后作为默认存储引擎,也是我们大部分场景要使用的,而InnoDB索引通过B+树实现,叫做B-tree索引。我们默认创建的 索引就是B-tree索引,所以理解B-tree索引的基本原理很重要,面试也是可能被问到的。 我们按照二叉查找树-->B树-->B+树-->B-tr 阅读全文
posted @ 2019-07-08 17:52 Diamond-Shine 阅读(726) 评论(0) 推荐(1) 编辑
摘要:安装就不说了,网上多得是,我的MySQL是8.0版本,可以参考:CentOS7安装MySQL8.0图文教程和MySQL8.0本地访问设置为远程访问权限 我的MySQL安装在阿里云上面,阿里云向外暴露端口,除了在/etc/sysconfig/iptables防火墙添加配置外,还需要到官网控制台安全组加 阅读全文
posted @ 2019-07-07 14:35 Diamond-Shine 阅读(570) 评论(0) 推荐(0) 编辑
摘要:在互联网公司或者一些并发量比较大的项目,虽然有各种项目架构设计、NoSQL、MQ、ES等解决比较高的并发访问,但是对于数据库来说,压力 还是太大,这时候即使数据库架构、表结构、索引等都设计的很好了,但是还是扛不住的,主从复制通过读写分离缓解读负载。但是像淘宝这种项目, 单一数据库肯定是不行的,为了解 阅读全文
posted @ 2019-07-05 11:21 Diamond-Shine 阅读(506) 评论(0) 推荐(0) 编辑
摘要:前面讲了如何设计数据库表结构、存储引擎、索引优化等内存,这篇文章会讲述如何进行SQL优化,也是面试中关于数据库肯定会被问到的, 这些内容不仅仅是为了面试,更重要的是付诸实践,最终用到工作当中 之前的MySQL内存地址:MySQL系列内容 如何获取存在性能的SQL: 1、通过生产环境用户、测试人员反馈 阅读全文
posted @ 2019-07-04 15:16 Diamond-Shine 阅读(1217) 评论(0) 推荐(0) 编辑
摘要:在进行数据库查询的时候,索引是非常重要的,当然前提是达到一定的数据量。索引就像字典一样,通过偏旁部首来快速定位,而不是一页页 的慢慢找。 索引依赖存储引擎层实现,所以支持的索引类型和存储引擎相关,同一种索引底层实现在不同存储引擎也是不一样的 本文基于MySQL8.0版本,关于explain用法,可以 阅读全文
posted @ 2019-07-03 17:27 Diamond-Shine 阅读(990) 评论(0) 推荐(0) 编辑
摘要:MySQL复制是基于主库上的二进制日志来完成,复制是异步的,可能存在延迟 MySQL日志分为: 1、服务层日志:二进制日志、通用日志、慢查日志 2、存储引擎层日志:innodb中重做日志和回滚日志 二进制日志: 记录了所有对数据库修改的事件,包括DML和DDL,但是不包含因为出错回滚的日志。二进制日 阅读全文
posted @ 2019-07-03 15:28 Diamond-Shine 阅读(403) 评论(0) 推荐(0) 编辑
摘要:良好的数据库逻辑设计和物理设计是数据库高性能的基础,所以对于数据库结构优化是很有必要的 数据库结构优化目的: 1、减少数据的冗余 2、尽量避免在数据插入、删除和更新异常 例如:有一张设计不得当的学生选课表 查询结果: 插入异常: 如果表中某个实体依赖另一个实体而存在,想添加一门语文课,但是依赖学生、 阅读全文
posted @ 2019-06-22 16:41 Diamond-Shine 阅读(680) 评论(0) 推荐(0) 编辑
摘要:影响数据库性能的因素: 1、硬件环境:CPU、内存、存盘IO、网卡流量等 2、存储引擎的选择 3、数据库参数配置(影响最大) 4、数据库结构设计和SQL语句 MySQL采用插件式存储引擎,可以自行选择,但同时如何选择也成了问题,本文会介绍存储引擎的特点,以及如何选择 MySQL体系结构: Serve 阅读全文
posted @ 2019-06-20 22:47 Diamond-Shine 阅读(405) 评论(0) 推荐(0) 编辑
摘要:如何选择优化的数据类型: 当一个列有多种数据类型可以选择,选择顺序:数字类型、日期/二进制类型、字符类型,相同级别的数据类型,优先选择占用空间小的类型 1、通常更小的更好 相同级别的数据类型,选择占据空间更小的数据类型。更小的数据类型通常更快,因为占用更少的磁盘、内存和CPU缓存,处理时需要的 CP 阅读全文
posted @ 2019-05-13 11:03 Diamond-Shine 阅读(423) 评论(0) 推荐(0) 编辑