《MySQL 实战45讲》这个专栏写的非常好,但是我们的学习热情,远远的超过了 45 讲的范畴!
我一直想不到一个好的标题应该怎么写。我想MySQL的一些重要的内容。我在两次面试中都遇到过的,但直接用MySQL标题好像又不太贴切。干脆就是所写的内容吧。
马克-to-win:既 然我们教材用mysql,我们仔细研究一下mysql缺省情况,即两个窗口都是REPEATABLE-READ(可重复读)级别的情况。两个窗口都开始事 务以后,窗口2的update,delete,insert,窗口1肯定都看不见。但双方如果都同时update,delete,insert的话,虽然 会被block住,但一旦最后两个窗口都提交,两个窗口的效果是累加的。马克-to-win:举几个例子:1)比如窗口2先要减1,虽然窗口1看不见这种变化,窗口1如果也要 减1的话,虽然当时被block住,但只要窗口2提交的话,窗口1竟然凭着select * from table能够看到累加的效果,即一共减了2。换句话说,窗口1如果不update一下,就不会看到窗口2的update的效果。2)同样道理,如果窗口 2删除了一条记录,提交以后,窗口1未提交之前,还以为这条记录存在呢。select时发现还有,但update时,不能update,也不报错。提交以 后才发觉,数据早没有了。更新半天,都是瞎忙活。马克-to-win:也好理解,因为窗口2早delete了嘛!3)如果窗口2增加一条,窗口1也想增加同样主键的这条记录 (因为看不到这条主键的记录),暂时被挡住以后,当窗口2提交,窗口1会报错,说试图增加重复键。4)窗口1想更新全部的记录为红色,同时窗口2想插入一 条蓝色的,被挡住后不能动弹键盘。窗口1必须先提交,select一下,没发觉蓝色的,等窗口2提交以后,大家都发觉,所有的都变成了红色,除了新插入的 一条是蓝色。所以还是符合提交的变化都会生效,变化的效果是累加的。5)窗口2增加一条,窗口1死活看不到这一条。即使看不见,如果愣更新这条记录的话, 会被挡在那里。马克-to-win:这时如窗口2提交,窗口1简单select,就可以看到自己update的效果。mysql的策略是,只要你叠加在别人的修改之上修改了, 在你提交之前,是可以看到这种修改的,即使你的窗口级别是REPEATABLE-READ(可重复读)。
异步复制:主库将事件写入二进制日志,但不知道从库是否接收成功,也不知道从库什么时候重放二进制日志,如果主库崩溃,则在主库提交的事务可能还没有传输到从库,这种情况下如果主从故障切换,从库还没有传输到从库的事务将丢失
数据的采集计算程序-云服务器-程序定时-存储到数据库-数据库图表制作-内网穿透-手机端展示
合成复用原则 又称为 组合复用原则 , 合成/聚合复用原则 , 组合/聚合复用原则 ;
在程序员的职业生涯中,总会遇到数据库表被锁的情况,前些天就又撞见一次。由于业务突发需求,各个部门都在批量操作、导出数据,而数据库又未做读写分离,结果就是:数据库的某张表被锁了!
重点文档:https://github.com/danfengcao/binlog2sql
上月初,拥有60+全新特性,性能全面超越官方版本的腾讯云MySQL 8.0正式发布。 经过腾讯云数据库团队的不断努力,在全新引擎的加持下,腾讯云MySQL 8.0数据库性能得到进一步提升,QPS达到70w+。腾讯云 MySQL 8.0的发布,将为电商、游戏、金融等行业带来更简化的业务开发模式、更安全的数据库管理服务、更丰富的应用场景,进一步加速客户产业升级。详情请戳→超越官方版本的MySQL8.0来了。 这样一款“性能怪兽”自然也吸引了不少忠实用户和技术发烧友的注意,然而官网却好像一直看不到8.0的影子,
ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)。
所有的docker容器内的卷,没有指定目录的情况下都是在**/var/lib/docker/volumes/自定义的卷名/_data**下, 如果指定了目录,docker volume ls 是查看不到的。
大家都知道,slow query系统做的好不好,直接决定了解决slow query的效率问题
通过 docker 启动 mysql 必须在 run 时指定环境变量,如不指定则启动会出现报错。这里直接测试下不添加环境变量 run :
在Oracle Cloud服务的体验中,除了高大上的Oracle 18c能让我眼前一亮,提前享受下未发布版本。
自2009年以来,Square为小企业提供了快捷方便的信用卡支付服务。四年前,该公司通过其Cash App扩展到p2p交易领域。在经历了一些稳步增长之后,该应用在2016年人气飙升,短短几个月就拥有了数百万用户,并登上了应用商店下载量的榜首。问题?“我们有一个很大的单体的几十万行代码,这是建立在单一的MySQL数据库的假设上;它从一开始就没有被设计成可伸缩的。”工程经理Jon Tirsen说。随着用户的不断增加,公司不得不为数据库投入越来越昂贵的硬件;同时,Tirsen的三人团队需要替Cash App的可伸缩性问题想出一个长期解决方案。“因为我们有增长轨迹,我们真的需要很快很快的解决它,接受我们产品方面的挑战。”他说。
ODBC驱动程序下载地址:http://dev.mysql.com/downloads/connector/odbc/5.2.html
2、使用VMware创建虚拟机,过程百度下一大堆,这里不做详细介绍。如果不喜欢虚拟机访问方式(我是很讨厌这种,很麻烦,复制粘贴都得安装插件,太麻烦,直接把虚拟机当成一台远程机器使用了);
说起来也是个巧合,在我安装mysql5.7版本的时候,看走眼了,安装成mysql8.0版本的了。于是乎,我当时觉得8.0,嗯,比5.7数字要大,那么一定更先进!实际上,却大有不同。
在进行alter table操作时,有时会出现Waiting for table metadata lock的等待场景。而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)都无法进行,也会在Opening tables的阶段进入Waiting for table metadata lock的队列。如果是产品环境的核心表出现了这样的锁等待队列,就会造成灾难性的后果。
学习编程时,总会遇到各种各样的数据库,比如Redis、MySQL或MongoDB。这些数据库都有一个共同特点:全是基于命令行操作,没有可视化管理界面。
PS:除了高级篇之前的docker几个系列还比较接地气,如何将docker和实际的开发中串联起来。让docker真正的接地气。找个项目就开始干!
linux上原始安装mysql操作是非常复杂的还容易出错,今天就是用yum来安装mysql是比较简单的。目前只需要准备一个服务器和一个链接工具就好了。如果没有链接工具的可以去上一篇文章中去查看下载地址。好了话不多说直接开始安装步骤吧。
我们知道PATH是系统内置变量,还有HOME、PWD、LOGNAME等变量,这些变量是在系统里的配置文件规定的,env命令可以获取到系统变量,系统的变量一般都是大写的,变量的值则可以是字符串或数字:
Mac下MySQL使用的是默认值,所以你在/etc/下看不到my.cnf.具体查看CNM
如果执行命令过程中提示:Unable to find a match: mysql-community-server 可以通过命令解决
最近偶尔会收到用户反馈数据不见了,数据丢失了的问题。从现象上来看,这类问题在数据库层面就是紧急程度最高的那一类了,抛开客观条件来说,针对这一类问题的恢复手段几乎只有备份恢复+回放 Binlog,耗时一般比较久,对业务的影响也会很大。
前段时间,公司内部遇到了一个问题,就是我们创建的同一批任务,别分配给了不同的实例去执行,导致线上的结果出现问题。
如果说你的数据量并发量不大,或者你的数据量很少没有到千万级别,也许pt-osc、gh-osc,online-ddl这些工具都用不着。但是,如果你的数据量很大,数据又很热。如果你没有这些工具,你可能无法完成对一个数据库新增一个字段或者任何一个简单的DDL语句。
MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
如何在本地远程连接管理搭建在cvm服务器上的mysql服务,首先排除如防火墙和安全组等安全策略的限制
今天来继续说说自动化开发的一些事情,截止目前,也是按照计划中的开发进度在推进。说几点自己的感受。 元数据的设计 元数据这部分我的设计就是从简,先来一个概要的信息,然后细节的信息可以通过其他入口来看。 比如对于数据库来说,系统,机架位的信息,这些完全可以从兄弟部门那里通过API的方式来得到。可以作为信息的参考。 很多元数据的设计和规划,前期如果已经有了成型的系统,直接废弃掉,革命掉也不大好,还是要吸取已有的经验,逐步沉淀,总是事情不是完全从零开始,但是在设计的时候,还是需要避免过度设计。 比如下面的概要信息,
MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_name ; ---- 在命令提示窗口中删除数据表 在mysql>命令提示窗口中删除数据表SQL语句为DROP TABLE: 实例 以下实例删除了数据表kxdang_tbl: root@host# mysql -u root -p Enter password:******* mysql
由于Druid不断升级,导致很多的配置都发生了不同的变化,使用老配置会导致一些监控失效。本文存在的意义就是记录一个可用的版本,后面升级均可参考本文进行修改
上次刚接触SqlLite,不知道怎么创建数据库,现在做下总结: 界面和MYSQL一样,都是CMD界面,但不是在SQLite.exe中创建数据库: 首先还是说一下cmd下sqlite的使用网上已经很多了、不做过多的赘述。大致说一下相应的命令就行了、作为学习sqlite的一个记录 1:选择下载对应自己系统的sqlite.3exe文件 2:解压后使用cmd命令进入sqlite3.exe文件所在的路径执行命令就可以操作做相应的操作。 在进入数据库之后如果需要退出的话windows下摁ctrl+c就能退出
性能的管理一直都是摆在第一位的,dba的很多工作管理层都看不到也没有办法衡量价值,但是如果一个系统慢的跟蜗牛一样,dba通过监控调优把系统从崩溃边 缘重新拉回到高铁时代。这种价值和触动应该是巨大的。(很多企业的领导认为系统跑不动了就需要换更快的CPU、更大的内存、更快的存储,而且这还不是少 数,所以DBA的价值也一直体现不出来,薪水自然也就不会很高)
学会数据库的导入导出非常重要,为什么呢?向下看。首先您可以把数据转储进行备份和还原,以便在紧急情况下恢复数据库的旧副本。您还可以把数据迁移到新服务器或开发环境。
好吧,我承认我标题党了。但是这篇内容应该让你从一个新的角度理解Docker的本质是什么。
今天一个开发同事找到我们,问能不能帮忙做一个存储过程的恢复,因为这是一套开发测试环境,所以我们给了开发足够的权限使用,每天会在后端做一次数据库备份工作。
之前一直在ctf官网或者一些其他的平台玩ctf,用大佬集成好的环境练习。因为学校需要,就用自己会的知识利用docker搭建CTFD。
mysql 复制是基于binlog日志的,binlog日志中根据事件类型,事件以不同的格式被记录到二进制日志中,复制的格式由系统变量binlog_format控制,mysql支持三种格式的binlog日志格式设置,各有优缺点:如下
Zabbix proxy是整个Zabbix架构的主要组件。因此很多时候,当其中一个proxy出现故障,会对所有监控配置造成严重的后果,引起一连串事件与问题。
做数据同步传输的时候,想要使用iostat命令来监控磁盘的IO情况,使用时发现找不到,系统默认没有安装这个包。呵呵,没有办法只好自己动手装了
今天做个小实验需要修改MySQL的配置文件,我电脑上安装的是MySQL5.6,由于安装时间太久忘了安装在哪个目录下了,所以首先查了一下安装在本机上的MySQL的目录位置。
ACID 及它们之间的关系如下图所示,比如 4 个特性中有 3 个与 WAL 有关系,都需要通过 Redo、Undo 日志来保证等。
由于这个任务在入口方法上使用了事务,如果服务内的所有原子任务不全部执行完成,期间所有的变更就都不会被提交到MySQL,即服务未结束前,所有被update的记录,在这10min内,其它任何试图更新这些记录的操作都会出现更新失败。
领取专属 10元无门槛券
手把手带您无忧上云