首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库 mysql 开始

在缓存方面的我们有了 redis 这样的 nosql 数据库,而 mongodb 在业务等级和 mysql 基本是平级的,当然使用程度上说,mysql 这样关系型数据库统计地位确实根深蒂固的。...而大数据领域有列式数据库 HBase ,另外数据关系领域在一对多领域衍生出来某个对象需要的对象关系跟自己平级,那就出现了图数据库,目前主流图数据库还是 neo4j。...回到 mysql ,关于他的讲述,如今各种视频资料已经漫天遍野,本人自然无法聊出更多所以就根据其常见的机制简单介绍。索引几乎聊到数据库,索引是必然会聊到的,主键索引和唯一索引是开发必须考虑的。...主从复制中有 relay logmysql 的所有信息复制在 binlog 中,如果节点需要复制主节点信息,需要读取主节点的 binlog 写入到 relay log,然后在从 relay...大家可能会好奇为什么还多加一个 relay log ,这是开发中默认的一个想法,网络是不可靠的,同时数据之间需要缓冲,如果节点,读取后直接同步,那么网络出错了,可能会产生错误数据,万一有请求来了,我一遍同步一遍接受请求压力山大呀

9810

mysql 隔离级别的实现

简介 本文探讨innodb如何使用mvcc和各种锁机制,保障mysql的四层隔离等级的。 0....图0.3.1 第一类更新丢失在各种隔离等级下都已规避,是数据库在实现时默认解决的问题。 第二类更新丢失的解决是利用锁,而不依赖隔离等级。...图3.1 各个隔离等级用到的技术 RU之下 读取时不加锁 但修改时默认加锁 RC之下 快照读(普通select)时不加锁,但启用语句级别的mvcc——每次快照读时都生成ReadView,读完就销毁。...RR下的加锁机制,参考MySQL的锁机制和加锁原理,也可以看我的文章。 快照读(普通select)时不加锁,但启用事务级别的mvcc——第一次快照读时生成ReadView,事务提交时销毁。...前者是数据库内核层面的,后者是后端框架层面的。问题的描述可以查阅【眼见为实】数据库并发问题 封锁协议 隔离级别 序

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库初识--MySQL 出发

    要学Web 开发,也得先对数据库有所了解呀。数据库分门别类,多种多样,目前我选择了 MySQL 。  ...看了 MySQL,觉得数据库处理也不是很难,主要就是一些对数据的处理,MySQL 主要就是一些命令的运用。   看过了,怕忘了吧,得及时记录下来。...(2)关系数据库            关系是一个带有属性的表,这个表称为关系表,一组表组成一 数据库。            表由行和列组成,其行称为元组,列称为属性。           ...除此之外,最好为数据库创建索引,可以加快查询速度。...create table book(index index_name); 查看(id)索引的使用:explain select id from book where name="book2"; 还可以宏观上查看

    1.3K20

    MySQL事务隔离级别的实现原理

    回顾 在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。 读未提交:一个事务可以读取到另一个事务未提交的修改。...在MySQL中,默认的隔离级别是REPEATABLE-READ(可重复读),并且解决了幻读问题。简单的来说,mysql的默认隔离级别解决了脏读、幻读、不可重复读问题。...这项技术在数据库领域并不是普遍使用的。一些其它的数据库产品,以及mysql其它的存储引擎并不支持它。...悲观锁和乐观锁 悲观锁,正如它的名字那样,数据库总是认为别人会去修改它所要操作的数据,因此在数据库处理过程中将数据加锁。其实现依靠数据库底层。...这就有保证在同一个事务中多次读取相同的数据返回的结果是一样的,解决了不可重复读的问题 2、利用Gap Locks和Next-Key可以阻止其它事务在锁定区间内插入数据,因此解决了幻读问题 综上所述,默认隔离级别的实现依赖于

    55610

    MySQL 事务隔离级别的实现原理

    1 回顾 在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。 读未提交:一个事务可以读取到另一个事务未提交的修改。...在MySQL中,默认的隔离级别是REPEATABLE-READ(可重复读),并且解决了幻读问题。简单的来说,mysql的默认隔离级别解决了脏读、幻读、不可重复读问题。...这项技术在数据库领域并不是普遍使用的。一些其它的数据库产品,以及mysql其它的存储引擎并不支持它。...悲观锁和乐观锁 悲观锁,正如它的名字那样,数据库总是认为别人会去修改它所要操作的数据,因此在数据库处理过程中将数据加锁。其实现依靠数据库底层。...这就有保证在同一个事务中多次读取相同的数据返回的结果是一样的,解决了不可重复读的问题 2、利用Gap Locks和Next-Key可以阻止其它事务在锁定区间内插入数据,因此解决了幻读问题 综上所述,默认隔离级别的实现依赖于

    50710

    MySQL删库到跑路(一)——MySQL数据库简介

    MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。...   H、提供用于管理、检查、优化数据库操作的管理工具    I、可以处理拥有上千万条记录的大型数据库 3、MySQL应用 与大型数据库例如Oracle、DB2、SQL Server等相比,MySQL...4、MySQL管理 可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query...二、MySLQ存储引擎 1、MySQL存储引擎简介 插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是否使用事务等。...MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据库建模工具,是著名的数据库设计工具DBDesigner4的继任者。

    2K20

    MYSQL 数据库归档 到 归档设计

    我见到过的,听到过的数据库归档的方法有以下几种 1 数据通过人工的手段来进行清理,直接将表换名字,然后在重建一个新的表,承接数据。...2 数据通过MYSQL dump 或者其他的备份方式,将数据备份出来,在将数据恢复到数据归档库中,然后将备份的数据直接手动清理掉,这样的做法速度也很快,对业务的影响也比较小,基本上可以算是透明的方式了...下面就是一个MYSQL 针对一个数据库表归档的案例(这个案例也是有缺陷的,但目前是秉承着够用就好,以及时间成本的原则) 首先设计一个归档要考虑的问题如下 1 归档表的大小,以及每日最大,或最小的归档数据量...以下以最简单的自动化的方案来讲 下图是基于案例来讲的 因为数据库MYSQL 所以考虑了归档一次是多大的批量,避免归档数据量过大的时候将生产库hang 死,另外配置表主要的功能是有两个 1 限制一次拷贝和清理的数据量...declare save_month tinyint; #保留多少月之前的数据 declare times int; #执行次数记录 declare min_row_s int; # 当前数据库最小的

    5K41

    表设计与死锁,及为什么MYSQL 的死锁比别的数据库

    死锁在每个数据库系统中都会出现,并且死锁的出现比较容易出现在传统企业,或者业务复杂的,使用非MYSQL数据库中(这里没有歧视,这里提到的死锁较少的MYSQL 是指互联网企业,非传统企业的MYSQL,或功能单一的容器化的...MYSQL数据库) 主要的原因有几点 1 传统的系统的设计基本上是围绕着一个或几个核心表进行的查询和DML 操作完成的,而一般传统的系统在设计之初可能由于业务大小,和业务量上,开发设计核心表的初衷都比较简单...所以这也是上面某些群里面的人员,提到了MYSQL的死锁为什么相对于其他数据库系统少的主要原因。...而正是因为这样,其他的数据库使用中随着时间的流逝,和业务的扩展,发生问题的几率都比 使用MYSQL数据库的大。...终其原因,如果混乱的,不合理的使用MYSQL数据库,则还没到死锁爆发,数据库早就不干活了。

    2.1K50

    MySQL RR隔离级别的更新冲突策略

    对于事务的隔离级别,MySQL中默认是RR, Oracle中默认是RC,两个事务隔离级别存在着很大的差别,而换句话说,就算是RR的事务隔离级别级别,同是关系型数据库MySQL,SQLServer,postgreSQL...所以隔离级别的部分还是值得花一些时间来总结一下。 之前看到过丁奇大师的一篇文章,是分析InnoDB的在隔离级别RR下的一个“诡异”现象。...+----+-------+ | 1 | name1 | | 3 | name3 | +----+-------+ 我们继续做一个update, id=4的记录是刚刚在会话2中插入的,在此处变更,结果来看还是产生了一行数据的变化...会话 2: mysql> select *from t; +----+-------+ | id | name | +----+-------+ | 1 | name1 | | 3 | name3...| | 4 | name4 | +----+-------+ 3 rows in set (0.00 sec) 所以这就是更新冲突的策略了,目前的MySQL在RR隔离级别下的实现是这样。

    1.3K50

    MySQL InnoDB 事务隔离级别的实现原理

    今天介绍下,在 MySQL 的 InnoDB 存储引擎中,事务隔离是如何实现的。 InnoDB 里面每个事务有一个唯一的事务 ID,叫作 transaction id。...对于数据库的每行记录,都会有三个隐藏字段:db_trx_id (事务 id)、db_roll_pt (回滚指针)、delete_flag(删除标记)。...下面我们来逐步回放,MySQL 底层是如何实现这整个过程的: 第 1 行:表示每个事务的 ID 号,其中 read view 取的是所有当前活跃的事务 ID 数组,活跃指的是,已开启并生成事务 ID 但未提交的事务...当前的事务的一致性视图为 read view: [100, 101] ,max id: 103,那么根据这个规则,在上面的数据链中查询数据,最新的蓝色,开始找,找到第一个数据的 db_trx_id

    84220

    MySQL 数据库类型 InnoDB 转换为 MyISAM

    魏艾斯博客有一个 wordpress 站点,有一天无意中发现数据库挺大的,可是这个站也就不到 10 篇文章,没道理这么大的数据库啊。...然后开始查找原因,发现在 phpmyadmin 后台中的数据库类型和别的 wp 站点不同,这个站点是 InnoDB 类型而别的 wp 站点是 MyISAM 类型。...也忘记了怎么搞出来的,InnoDB 类型会导致数据库大小膨胀了几倍,所以决定InnoDB 类型转换为 MyISAM 类型。...打开 SSH 软件连接到 VPS 上面,输入下面命令: mysql -uroot -p 输入 phpmyadmin 密码登陆 ? 出现“mysql>”就可以继续了。...2018 年 4 月 28 日补充资料如下: 如果 MySQL 版本高于 5.7,会报错“invalid default value for”,MySQL5.7 不允许时间戳值为 0,比如下面的: datetime

    1.3K60

    C# 代码入门 Mysql 数据库事务

    filldb 地址: https://filldb.info/dummy/step1 FillDB 是一款免费工具,可快速生成大量 MySql 格式的自定义数据,用于测试软件和使用随机数据填充数据库。...然后在数据库中导入数据。 为了连接 Mysql 数据库,这里使用 MySqlConnector 驱动,请在创建控制台项目之后,通过 nuget 引入此包。...Mysql 数据库事务基础 百度百科:数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。...可重复读 导致的 幻读 问题,比如 A 事务在 笔记本 分类下给联想笔记本型号都打 9 折优惠,可是此时 B 事务 笔记本 分类下,增加了几个理想笔记本型号。...Mysql 的事务对删除表、创建表这些 DML 命令,其事务是无效的,起效的是表数据相关的操作,即 insert、update、delete 语句。

    24810

    MySQL 数据库类型 InnoDB 转换为 MyISAM

    然后开始查找原因,发现在 phpmyadmin 后台中的数据库类型和别的 wp 站点不同,这个站点是 InnoDB 类型而别的 wp 站点是 MyISAM 类型。...也忘记了怎么搞出来的,InnoDB 类型会导致数据库大小膨胀了几倍,所以决定InnoDB 类型转换为 MyISAM 类型。...打开 SSH 软件连接到 VPS 上面,输入下面命令: mysql -uroot -p 输入 phpmyadmin 密码登陆 sjkmiszhdin1.png 出现“mysql>”就可以继续了。...2018 年 4 月 28 日补充资料如下: 如果 MySQL 版本高于 5.7,会报错“invalid default value for”,MySQL5.7 不允许时间戳值为 0,比如下面的: datetime...允许转载,保留出处:魏艾斯博客 » MySQL 数据库类型 InnoDB 转换为 MyISAM

    2.6K220

    MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨

    开始支持 ROW 格式的 binlog, 5.1.8 版本开始,MySQL 开始支持 MIXED 格式的 binlog   MySQL 5.7.7 之前,binlog 的默认格式都是 STATEMENT...记录了对 MySQL 数据库执行了更改的所有操作     因为 binlog 的日志文件是二进制文件,不能用文本编辑器直接打开,需要用特定的工具来打开,MySQL 提供了 mysqlbinlog 来帮助我们查看日志文件内容...也就是说,MySQL5.1.30及之后,RC 隔离级别的 InnoDB 对 binlog_format 是有限制的,不能是 STATEMENT,否则表数据无法进行修改 MySQL 4.x 系列,由于官方不提供下载了...的默认值才是 ROW   3、主从复制 bug(InnoDB 引擎)     MySQL 5.1.30及之后,InnoDB 下,开启 RC 隔离级别的话是不能启用 binlog_format=STATEMENT...,性能并不比MyISAM低,说没特别的理由,基本可以放弃 MyISAM 了 参考 【原创】互联网项目中mysql应该选什么事务隔离级别 【原创】研发应该懂的binlog知识(上) 关于binary

    1.8K20
    领券