InnoDB

为了面上阿里,花费2个月终于整理出这份大厂Java面试资料

China☆狼群 提交于 2020-11-08 09:50:07
前言 先做个自我介绍,本人之前一直在外包公司做增删改查,做了两年,实在太累了!就想趁着金九银十这个好机会看能不能实现自己的阿里梦,没想到被虐了个干干净净! 不过没关系,通过这次面试,我也认识到自己确实有很多不足的地方,通过这篇文章,和大家分享一下,最后也把我整理的面试资料分享给大家,希望有人替我圆了阿里梦 阿里一面 1.自我介绍 2.说一下BIO 和NIO 3.你说到多路复用,多路复用什么意思,为什么可以做到多路复用 4.这个select函数你说一下,底层怎么保证效率的,如果请求很多怎么办 5.我看你用到了Zookeeper ,说一下他可以干什么 6.只有一个Zookeeper 行不行?怎么保证他的可用性 7.服务器和客户端连接,多个连接会不会出问题? 8.Zookeeper 如果每次消费都连接,会不会效率太低? 怎么解决? 9.说一下它的底层算法吧,说你知道的 10.我看你实现了这几种序列化机制,都说一下吧 11.为什么hessian,和kyro速度更快呢? 12.了解spring吗? 说一下ioc和aop 13.aop底层怎么实现的 14.说一下spring ioc创建和销毁? (我有点懵,问是不是要回答bean的生命周期,面试官说 不是,然后我就随便说了 ) 15.Java的类加载过程 16.了解mysql吗,说一下innodb底层 17.有没有搭过服务器? 18

高性能Mysql

风流意气都作罢 提交于 2020-11-08 09:46:06
show status like ' last_query_cost ' ; -- 查询上次在mysql中查询的次数 1: 根据前缀长度建立索引 https://www.cnblogs.com/gomysql/p/3628926.html 根据整个长度city子段建立索引,然后统计各个前缀字符串出现的频率次数。 mysql > update city_demo set city = ( select city from city order by rand () limit 1 ); Query OK, 1198 rows affected Rows matched: 1200 Changed: 1198 Warnings: 0 mysql > select count ( * ) as cnt, city from city_demo group by city order by cnt desc limit 10 ; + -- ---+----------------------------+ | cnt | city | + -- ---+----------------------------+ | 7 | Nabereznyje Telny | | 6 | Po | | 6 | Sousse | | 6 | Asuncin | | 6 | Sanaa | | 6 |

MySQL性能指标及计算方法

泄露秘密 提交于 2020-11-08 08:54:23
MySQL性能指标及计算方法 绝大多数MySQL性能指标可以通过以下两种方式获取: (1)mysqladmin 使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值。 如果想了解当前状态,需要进行差值计算 ;加上参数 --relative(-r),就可以看到各个指标的差值,配合参数--sleep(-i)就可以指定刷新的频率。 (2)Show global status 可以列出MySQL服务器运行各种状态值, 累计值 。 mysqladmin extended-status命令及show global status得到的指标项特别多。实际应用中,重点关注以下性能指标: 1. tps/qps tps: Transactions Per Second,每秒事务数; qps: Queries Per Second每秒查询数; 通常有两种方法计算tps/qps: 方法1:基于 com_commit、com_rollback 计算tps,基于 questions 计算qps。 TPS = Com_commit/s + Com_rollback/s 其中, Com_commit /s= mysqladmin extended-status --relative --sleep=1|grep -w Com_commit Com_rollback/s

MySQL性能指标

℡╲_俬逩灬. 提交于 2020-11-08 08:31:41
https://blog.csdn.net/achiberx/article/details/71514862?utm_source=blogkpcl11 1. MySQL Connections 数据库连接数分为Max Connections, Max Used Connections 和 Connections 即:最大连接数, 最近期间使用的最大连接数 和 当前实时连接数! 在使用MySQL数据库的时候,经常会遇到这么一个问题,就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误,这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,msql的最大连数默认是151(ubuntu), 100(windows)。 mysql>mysql -u user -p password(命令行登录MySQL) mysql>show variables like 'max_connections';(查可以看当前的最大连接数) msyql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功) mysql>exit(推出) 1 2 3 4 这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效

常用的mysql数据库的命令 记录笔记

我们两清 提交于 2020-11-06 09:38:34
# 数据库常用命令 使用命令操作(开启,关闭,查看状态)数据库: 开启: sudo /usr/local/mysql/support-files/mysql.server start 查看状态: sudo /usr/local/mysql/support-files/mysql.server status 关闭: sudo /usr/local/mysql/support-files/mysql.server stop 创建数据库: 使用具体用户登录之后: create database 数据库名称; 假如数据库不存在,则创建数据库 create database if not exists 数据库名称; 用户没有登录,直接使用 mysqladmin 创建数据库 mysqladmin -u root -p create RUNOOB 显示所有的数据库: show databases; 删除数据库: 使用具体用户登录之后: drop database 数据库名称; 用户没有登录,直接使用 mysqladmin 删除数据库 mysqladmin -u root -p drop 数据库名称 查询当前正在使用的数据库: select database(); 创建表: create table if not exists 表名( 字段名称1 字段类型1, 字段名称2 字段类型2, ...

初相识|performance_schema全方位介绍

狂风中的少年 提交于 2020-11-06 05:09:02
作者 : 罗小波 ·沃趣科技高级数据库技术专家 出品 : 沃趣科技 作者简介 : IT从业多年,历任运维工程师、高级运维工程师、运维经理、数据库工程师,曾参与版本发布系统、轻量级监控系统、运维管理平台、数据库管理平台的设计与编写,熟悉MySQL体系结构,Innodb存储引擎,喜好专研开源技术,追求完美。 |目 录 1、什么是performance_schema 2、performance_schema使用快速入门 2.1. 检查当前数据库版本是否支持 2.2. 启用performance_schema 2.3. performance_schema表的分类 2.4. performance_schema简单配置与使用 |导 语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不是很明显,很多标称类似 "深入浅出performance_schema" 的文章,基本上都是那种动不动就贴源码的风格,然后深入了之后却出不来了。对系统学习performance_schema的作用甚微。 现在,很高兴的告诉大家,我们基于 MySQL 官方文档加上我们的验证,整理了一份可以系统学习 performance_schema 的资料分享给大家,为了方便大家阅读,我们整理为了一个系列,一共7篇文章。下面

docker-compose 部署 mysql

故事扮演 提交于 2020-11-06 02:16:56
安装 docker & docker-compose 参考 Ubuntu 18.04 安装 Docker 配置 docker-compose 配置文件 version: '3' services: mysql: restart: always image: mysql:5.7.31 # 指定镜像和版本 container_name: mysql5.7 # 指定容器的名称 volumes: - ./mysql/data:/var/lib/mysql # 挂载数据目录 - ./mysql/my.cnf:/etc/my.cnf # 挂载配置文件 environment: - "MYSQL_ROOT_PASSWORD=abc@123" - "TZ=Asia/Shanghai" ports: - 3306:3306 Environment 变量 MYSQL_ROOT_PASSWORD :root 用户的密码 MYSQL_DATABASE :在容器启动时创建指定默认数据库 MYSQL_USER 、MYSQL_PASSWORD : 这两个为可选变量,作用是:创建一个在 MYSQL_DATABASE 变量指定的数据库上拥有超级用户权限的新用户 MYSQL_ALLOW_EMPTY_PASSWORD :设置为 yes 允许 root 用户的密码为空。(不推荐) MYSQL_RANDOM_ROOT

MySQL数据库的索引、事务与存储引擎详解

风流意气都作罢 提交于 2020-11-05 10:52:42
目录 一、索引 1.1 什么是索引 1.2 索引的作用 1.3 创建索引的原则 1.4 索引的类型和举例 1.5 删除索引 二、事务 2.1 什么是事务 2.2 事务的ACID特点 2.3 事务控制语句 2.4 事务的控制方法 2.5 事务的操作举例 三、存储引擎 3.1 什么是存储引擎 3.2 存储引擎的作用和工作原理 3.3 myisam引擎的特点和适用场景 3.4 innodb引擎的特点和适用场景 3.5 企业选择存储引擎依据 3.6 如何修改存储引擎 一、索引 1.1 什么是索引 是一个排序的列表,存储着索引值和这个值所对应的物理地址 无需对整个表进行扫描,通过物理地址就可以找到所需数据 是表中一列或者若干列值排序的方法 需要额外的磁盘空间,伴随着表直接存在 1.2 索引的作用 数据库利用各种快速定位技术,能够大大加快查询速率 当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度 可以降低数据库的IO成本,并且还可以降低数据库的排序成本, IO:输入(写入、更改数据),输出(读取数据) 通过创建唯一性索引保证数据表数据的唯一性 可以加快表与表之间的连接 在使用分组和排序时,可大大减少分组和排序时间 1.3 创建索引的原则 1、表的主键、外键必须有索引 2、数据量超过300行的表应该有索引 3、经常与其他表进行连接的表,在连接字段上应该建立索引 4

Mysql MVVC笔记

懵懂的女人 提交于 2020-11-05 10:52:24
什么是MVVC,为什么要用它 在mysql的 InnoDB 不同事务隔离级别中,MVVC(Multi-Version Concurrency Control)工作在RC(Read Commited)和RR(Repeatable Read)这两种隔离级别中。其实MVVC简单理解,就是通过对每个事务赋予一个唯一的、递增的id来代替对数据行上锁从而减小DBMS的开销, 也就是读不会加锁。 举个不是很准确的例子,有两个事务T1,T2,它们的id分别是1,2。由于事务id是递增唯一的,因此可以认为T2在逻辑上是后于T1发生的,当T2想要查询(select)某一行,这行的trx_id(最后修改本行数据的事务id)为1,那么我们就可以认为这一行对T2是可见的,因此返回改行数据。 其实这个例子问题很大,这也是为什么要写这篇文章记录一下 前置知识 在InnoDB中,每个行后面都有一些额外的字段,主要要知道 DB_TRX_ID(最近修改行的事务ID),DB_ROLL_PTR(指向该行被修改的前一个状态),DELETE_VERSION(行是否被删除)。 当某个事务T对一行R做update操作时,若R对T是可见的(判断方法放在后面讲),将该行的DELETE_VERSION置为T的id,并将改行放入undo log中,而在表中会插入一条新的行R’,R’的DB_TRX_ID为T的id,DELETE

mlflow upgrade(升级) MySQLdb._exceptions.IntegrityError: (1215, 'Cannot add foreign key constraint')

别等时光非礼了梦想. 提交于 2020-11-05 05:20:51
背景 在 mlflow upgrade 这篇文章中,我们说到了mlflow 升级的步骤, 很幸运,一气呵成, 并没有发生什么错误, 今天要说的就是升级过程中如果遇到mysql Cannot add foreign key constraint的错误该怎么处理 其中: mlflow 从1.4.0升级到1.11.0 mysql版本 5.7.21-log 遇到如下问题: (mlflow-1.11.0) ➜ mlflow db upgrade mysql://root:root@localhost/mlflow-online 2020/11/04 14:20:13 INFO mlflow.store.db.utils: Updating database tables INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade 0a8213491aaa -> 728d730b5ebd, add registered model tags table Traceback (most recent call