InnoDB

mysql,redis

旧城冷巷雨未停 提交于 2020-11-03 16:33:59
1、搭建mysql服务器,并实现主主复制、半同步复制 存储引擎: 表类型:也称为“表类型”,表级别概念,不建议在同一个库中的表上使用不同的ENGINE; CREATE TABLE ... ENGINE[=]STORAGE_ENGINE_NAME ... SHOW TABLE STATUS 常见的存储引擎: MyISAM, Aria, InnoDB, MRG_MYISAM, CSV, BLACKHOLE, MEMORY, PERFORMANCE_SCHEMA, ARCHIVE, FEDERATED InnoDB:InnoBase Percona-XtraDB, Supports transactions, row-level locking, and foreign keys 数据存储于“表空间(table space)"中: (1) 所有数据库中的所有类型为InnoDB的表的数据和索引存储于同一个表空间中; 表空间文件:datadir定义的目录中 文件:ibdata1, ibdata2, ... (2) innodb_file_per_table=ON,意味着每表使用单独的表空间文件; 每表的数据文件(数据和索引,存储于数据库目录)存储于自己专用的表空间文件中,并存储于数据库目录下: tbl_name.ibd 表结构的定义:在数据库目录,tbl_name.frm 事务型存储引擎

想去阿里?就不要错过这些Java面试题

南笙酒味 提交于 2020-11-02 18:43:04
前言 相信很多小伙伴都想去大厂工作,今天小编给大家分享下阿里Java面试题和面试流程,希望能够帮助到各位小伙伴。 面试流程 先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面。 前面几轮技术面主要问的是一些基础、项目实现和拓展,最后一轮技术面是部门老大面,主要就问一些架构、技术和业务的理解,因为这个时候他看的就是你的潜力,就是看你有没有培养的价值。 HR面主要就是跟你聊聊天,很多人在HR面后挂了,一般不是因为你不表现不好,可能是你之前几面的表现一般,公司基于hc、人才配比、与其他候选人的对比等多个维度考虑,最终决定是否给你offer。 下面列出了一面问到的问题: 阿里一面(电面) synchronized与lock的区别,使用场景。看过synchronized的源码没 JVM自动内存管理,Minor GC与Full GC的触发机制 了解过JVM调优没,基本思路是什么 如何设计存储海量数据的存储系统 缓存的实现原理,设计缓存要注意什么 淘宝热门商品信息在JVM哪个内存区域 操作系统的页式存储 volatile关键字的如何保证内存可见性 happen-before原则 Lucene全文搜索的原理 阿里二面: 自我介绍下自己,不超过3分钟 你说你熟悉并发编程,那么你说说Java锁有哪些种类,以及区别 如何保证内存可见性 Http请求的过程与原理 TCP连接的特点

MySQL 三大日志

…衆ロ難τιáo~ 提交于 2020-11-02 15:58:46
mysql 日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是 二进制日志( binlog ) 和 事务日志(包括 redo log 和 undo log ) binlog binlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。 binlog 是 mysql 的逻辑日志,并且由 Server 层进行记录,使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。 逻辑日志 :可以简单理解为记录的就是sql语句 。 物理日志 : mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更 。 binlog 是通过追加的方式进行写入的,可以通过 max_binlog_size 参数设置每个 binlog 文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志 binlog使用场景 在实际应用中, binlog 的主要使用场景有两个,分别是 主从复制 和 数据恢复 。 1、 主从复制 :在 Master 端开启 binlog ,然后将 binlog 发送到各个 Slave 端, Slave 端重放 binlog 从而达到主从数据一致。 2、 数据恢复 :通过使用 mysqlbinlog 工具来恢复数据。 binlog刷盘时机 对于 InnoDB 存储引擎而言

必须了解的 MySQL 三大日志

别说谁变了你拦得住时间么 提交于 2020-11-02 14:50:31
点击上方蓝色“ 程序猿DD ”,选择“设为星标” 回复“ 资源 ”获取独家整理的学习资料! 来源 | juejin.im/post/6860252224930070536 「羊毛+福利」撸一波超便宜的云服务,完成任务DD另外送奖励! 日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。 mysql 日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。 作为开发,我们重点需要关注的是二进制日志( binlog )和事务日志(包括 redo log 和 undo log ),本文接下来会详细介绍这三种日志。 binlog binlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。 binlog 是 mysql 的逻辑日志,并且由 Server 层进行记录,使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。 逻辑日志 :可以简单理解为记录的就是sql语句 。 物理日志 : mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更 。 binlog 是通过追加的方式进行写入的,可以通过 max_binlog_size 参数设置每个 binlog 文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志。 binlog使用场景 在实际应用中, binlog 的主要使用场景有两个

MySQL 5.7 vs 8.0,哪个性能更牛?

℡╲_俬逩灬. 提交于 2020-11-02 13:03:34
背景 测试mysql5.7和mysql8.0 分别在读写、只读、只写模式下不同并发时的性能(tps,qps) 前提 测试使用版本为mysql5.7.22和mysql8.0.15 sysbench测试前先重启mysql服务,并清空os的cache(避免多次测试时命中缓存) 每次进行测试都是新生成测试数据后再进行mysql5.7和mysql8.0的测试 每次测试时保证mysql5.7和mysql8.0的配置参数一致 环境 机器 cat /etc/redhat- release | xargs echo '版本 ' && dmidecode -s system -product- name | xargs echo '是否虚拟化 ' && cat /proc/cpuinfo |grep "processor" |wc -l | xargs echo 'cpu核数 ' 版本 CentOS Linux release 7.5 .1804 (Core) 是否虚拟化 KVM cpu核数 4 myql5.7.22 5.7 .22 -log innodb_buffer_pool_size 128M innodb_log_buffer_size 64M innodb_log_file_size 48M binlog_format ROW log_bin ON transaction_isolation

[初级]深入理解乐观锁与悲观锁

本秂侑毒 提交于 2020-11-02 11:25:30
[初级]深入理解乐观锁与悲观锁 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。 无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、tair等都有类似的概念。 针对于不同的业务场景,应该选用不同的并发控制方式。所以,不要把乐观并发控制和悲观并发控制狭义的理解为DBMS中的概念,更不要把他们和数据中提供的锁机制(行锁、表锁、排他锁、共享锁)混为一谈。其实,在DBMS中,悲观锁正是利用数据库本身提供的锁机制来实现的。 下面来分别学习一下悲观锁和乐观锁。 悲观锁 在关系数据库管理系统里,悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)是一种并发控制的方法。它可以阻止一个事务以影响其他用户的方式来修改数据。如果一个事务执行的操作都某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。 悲观并发控制主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。 悲观锁,正如其名

必须了解的mysql三大日志

江枫思渺然 提交于 2020-11-02 10:50:33
点击上方“ 小罗技术笔记 ”,关注公众号 第一时间送达实用干货 作者:六点半起床 来源: http://suo.im/6vKqvm 日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。 mysql 日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志( binlog )和事务日志(包括 redo log 和 undo log ),本文接下来会详细介绍这三种日志。 binlog binlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。 binlog 是 mysql 的逻辑日志,并且由 Server 层进行记录,使用任何存储引擎的 mysql 数据库都会记录 binlog 日志。 逻辑日志: 可以简单理解为记录的就是sql语句 。 物理日志: 因为 mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更 。 binlog 是通过追加的方式进行写入的,可以通过 max_binlog_size 参数设置每个 binlog 文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志。 binlog使用场景 在实际应用中, binlog 的主要使用场景有两个,分别是 主从复制 和 数据恢复 。 1、 主从复制 :在 Master 端开启 binlog

mysql间隙锁

一个人想着一个人 提交于 2020-11-02 06:23:17
前面一文 mysql锁 介绍了mysql innodb存储引擎的各种锁,本文介绍一下innodb存储引擎的间隙锁,就以下问题展开讨论 1.什么是间隙锁?间隙锁是怎样产生的? 2.间隙锁有什么作用? 3.使用间隙锁有什么隐患? 一、间隙锁的基本概念 1.什么叫间隙锁 当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(NEXT-KEY)锁。 2.间隙锁的产生 上面的文字很抽象,现在举个栗子,介绍间隙锁是怎么产生的: 假设有以下表t_student:(其中id为PK,name为非唯一索引) id name sex address 1 zhaoyi 0 beijin 3 sunsan 1 shanghai 4 lisi 0 guangzhou 5 zhouwu 0 shenzhen 6 wuliu 1 hangzhou 这个时候我们发出一条这样的加锁sql语句: select id,name from t_student where id > 0 and id < 5 for update; 这时候,我们命中的数据为以下着色部分: id name sex address 1 zhaoyi 0 beijin

高性能Mysql

一世执手 提交于 2020-11-01 21:41:42
索引及数据库高性能基础 作为最核心的内功知识,也是面试中我对应聘者的重点考察项之一。迄今为止,在这方面能让我完全满意的应聘者寥寥无几。 **注意:**这里介绍的技能对Mysql、SqlServer、Oracle等关系型数据库基本通用,比较而言,Mysql索引机制更加简单,为了排除更高级的数据库特性带来的复杂性,本文采用Mysql作为性能分析案例。 另外 Mysql常见的存储引擎:MyISAM、InnoDB,实际项目中极少采用MyISAM,大多采用InnoDB。 InnoDB的索引类型:BTREE、HASH,实际项目中很少使用HASH索引,基本都采用BTREE 故采用InnoDB和BTREE作为案例分析更具有普遍性。以下介绍的基础知识可能随着Mysql的版本发展会有少许变化。 I 关于索引 数据准备 建测试表: CREATE TABLE `user_info` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(18) NOT NULL, PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8 生成测试数据: public class FileGen