730 天前 / vivo互联网技术
MySQL 作为当下最流行的开源关系型数据库,有一个很关键和基本的能力,就是必须能够保证数据不会丢。那么在这个能力背后,MySQL 是如何设计才能保证不管在什么时间崩溃,恢复后都能保证数据不会丢呢?有哪些关键技术支撑了这个能力?本文将为我们一一揭晓。 一、前言 MySQL保证数据不会丢的能力主要体现在两方面: 能够恢复到任何时间点的状态; 能够保证 MySQL 在任何时间段突然奔溃,重启后之前提交的记录都不会丢失; 对于第一点将 MySQL 恢复到任何时间点的状态,相信很多人都知道,只要保留有足够的 binlog,就能通过重跑 binlog 来实现。
730 天前 / 阿斯兰
点击上方 JavaKeeper,关注我们 写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。 个人建议把面试题看作是费曼学习法中的回顾、简化的环节,准备面试的时候,跟着题目先自己讲给自己听,看看自己会满意吗,不满意就继续学习这个点,如此反复,好的 offer 离你不远的,奥利给 一、MySQL 架构和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。
731 天前 / bytearch
5、总结 6、 欢迎关注"浅谈架构"公众号、不定期分享精彩文章 #1、概述 mysql 分库分表一般有如下场景 1). 垂直分表 ( 将表分为主表和扩展表)2). 垂直分库 ( 将表按业务归属到不同的库,如订单相关的放到订单库,用户相关的表放到用户库等,这也是我们常说的权限回收其中的一部分)3). 水平拆表 ( 当数据库整体瓶颈还未到时,少量表到达性能瓶颈)4). 水平拆库 & 拆表 ( 数据整体性能到达瓶颈,单一写入出现性能瓶颈) 其中 1,2 相对较容易实现,本文重点讲讲水平拆表和水平拆库,以及基于 mybatis 插件方式实现水平拆分方案落地。
737 天前 / 编程一生
题目一 MyISAM 和 InnoDB 的区别,什么时候选择 MyISAM 参考回答 InnoDB 是目前 MySQL 主流版本 (5.6、5.7、8.0)默认的存储引擎,支持事务、外键、行级锁,对于并发条件下要求数据的一致性,适用于对数据准确性要求高的场景。 MyISAM 只支持表级锁、数据排列是按照插入顺序,没有做规则排序。适合应用以查询和插入为主,只有很少量的更新和删除操作,对事务的完整性和并发性要求不是很高的场景。 实际运用 看到很多人在选择存储引擎的时候会无脑的选择 InnoDB,这个选择合理的一点是如果对数据准确性要求没有那么高,直接用 NoSQL 就好了。
738 天前 / AddoZhang
(Photo by Andrea Piacquadio from Pexels) 话说工作十多年,mysql 还真没用几年。起初是外企银行,无法直接接触到 DB;后来一直从事架构方面,也多是解决问题为主。 这次搭建海外机房,围绕时区大家做了一番讨论。不说最终的结果是什么,期间有同事认为 DB 返回的是 UTC 时间。 这里简单做个验证,顺便看下时区的问题到底是如何处理。 环境 openjdk version “1.8.0_242” mysql-connector-java “8.0.20” mysql “5.7” 时区 TZ=Europe/London 本地时区 GMT+8 创建个简单的库 test 及表 user...
760 天前 / 携程技术
作者简介 Alex,专注于云计算领域数年,目前主要从事容器云平台的建设,推进各类基础设施服务的云原生化。 小石川,目前主要从事容器云平台监控系统建设,对分布式、性能以及优化感兴趣。 一、背景与使用场景 随着 Kubernetes 平台在容器云计算领域的一统天下,云原生 (Cloud Native) 一词也被提的越来越频繁。各类应用纷纷走上了容器化、云原生化的道路,无状态服务应用在 Kubernetes 平台上的运行,已经得到了大规模生产级别的实践认可。
760 天前 / 阿伟me
准备我们需要的表结构和数据两张表 studnet( 学生)表和 score( 成绩)表, 创建表的 SQL 语句如下 CREATETABLE`student`( `id`int(11)NOTNULL, `no`varchar(20)DEFAULTNULL, `name`varchar(20)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4; CREATETABLE`score`( `id`int(11)NOTNULL, `no`varchar(20)DEFAULTNULL, `chinese`double(4,0)DEFAULTNULL, `math`double(4,0)DEFAULTNULL, `engilsh`double(4,0)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4; MySQL 连接查询分为以下三种 left join 左连接...
766 天前 / cxuan
「道歉声明:由于个人原因,公众号暂时不能留言,需要等到下个月才能开通,谢谢大家支持」 本文来源于读者投稿,文章中的我均指向读者自己。 从春节过后,我,一位双非渣本的大三学生,便踏上了实习之旅,面试了不下三十场,虽然很菜,但是也相应地拿了一些 offer ,例如京东金融、人人车等五六家 offer。 总结一下春招就是一个字:难。 没学历,技术还凑合,简历能过但是面试就有点困难。这期间收到了 N 个面试官的歧视,有些面试官感觉骨子里瞧不起我们这些双非的人。
767 天前 / 美团技术团队
总第 390 篇 2020 年 第 13 篇 MySQL 得益于其开源属性、成熟的商业运作、良好的社区运营以及功能的不断迭代与完善,已经成为互联网关系型数据库的标配。可以说,X86 服务器、Linux 作为基础设施,跟 MySQL 一起构建了互联网数据存储服务的基石,三者相辅相成。本文将分享一个工作中的实践案例:因 Intel PAUSE 指令周期的迭代,引发了 MySQL 的性能瓶颈,美团 MySQL DBA 团队如何基于这三者来一步步进行分析、定位和优化。希望这些思路能对大家有所启发。
777 天前 / 虞大胆
在《mysql 压力基准工具 sysbench 初探》一文中简单了解了 sysbench,经过进一步调研,深刻明白做一个基准测试很不容易。 进一步理解 sysbench 不仅仅测试 mysql,和 mysql 性能有关的还包括硬件(cpu、memory、disk),但由于目前所有的服务均部署在阿里云,所以硬件选择并没有太多的选择,基准测试主要用于参数调整了。 sysbench 新版本的使用方法已经有了非常大的变化,参数也很多,手册上描述的并不全面,幸亏基准测试的很多用例都是 lua 语言写的,所以有些参数最好直接看 lua 源码。
779 天前 / cultus
文章源于一个问题:如果我们现在有两个 mysql 实例,在我们要尽量简单地完成分布式事务,怎么处理? 场景重现比如我们现在有两个数据库,mysql3306 和 mysql3307。这里我们使用 docker 来创建这两个实例: # mysql3306 创建命令 docker run -d -p 3306:3306 -v /Users/yjf/Documents/workspace/mysql-docker/my3306.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /Users/yjf/Documents/workspace/mysql-docker/data3306:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-3307 mysql:5.7 # msyql3306 的配置: [mysqld] pid-file = /var/run/my...
780 天前 / 虞大胆
今天记录下参数调优,MySQL有几百个参数,一般情况下需要调整的并不多,而且不要为了调整而调整,很多参数和MySQL运行机制是有关的,但即使不了解内部机制也不妨碍调整。 由于InnoDB引擎是主流,所以MyISAM相关的参数就不要配置了,这也提示很多原来很多的参数调整不会有用。 1:innodb_buffer_pool_size 这个是最重要的参数,InnoDB引擎数据数据和索引尽量都放在内存中,对性能非常重要,理论上配置值为物理内存的70%。 innodb_buffer_pool_instances 主要是为了提升并发能力,称为pool实例。
781 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发生了死锁现象: ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 由于开发任务紧急,只是暂时规避了一下,但是对触发死锁的原因和相关原理不甚了解,于是这几天一直在查阅相关资料,总结出一个系列文章供大家参考,本篇是上篇,主要介绍 MySQL 加锁原理和锁的不同模式或类型的基本知识。