面试-MySQL
MySQL搬运自掘金用户:小杰要吃蛋 [侵删]
数据库基础知识MySQL的基础架构
为什么要使用数据库
数据保存在内存
优点: 存取速度快
缺点: 数据不能永久保存
数据保存在文件
优点: 数据永久保存
缺点:1、速度比内存操作慢,频繁的IO操作。2、查询数据不方便
数据保存在数据库
数据永久保存
使用SQL语句,查询方便效率高。
管理数据方便
什么是SQL?
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。
1作用:用于存取数据、查询、更新和管理关系数据库系统。
什么是MySQL?
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。
MySql, Oracle,Sql Se ...
MySQL性能优化总结
Mysql 性能优化总结
1 客户端方向:1.1、客户端使用连接池,2 服务器端方向:
服务端连接数改大。
使用缓存组件:例如redis等。
基于主从复制的读写分离。
垂直分库,水平分库分表。
开启慢查询日志
SQL和索引的优化
需要在mysql的配置文件中去开启
查看是否开启:show variables like 'slow_query%';
查看多久算是慢查询语句:show variables like 'long_query_time';
3 多张表联合查询,是先查小表还是大表?小表驱动大表的思想:两表查询结果的笛卡尔乘积,越小越好,它的中间结果就会小一些,减少内存的消耗。所以在连接查询的时候左表建议是小表。
MySQL索引原理
索引是帮助MySQL高效获取数据的排好序的数据结构。
在MySQL的InnoDB和MyISAM存储引擎中索引的数据结构都是B+树和HASH。
首先说数据结构中的一些树,比较常见的有二叉树、二叉查找树、平衡二叉树、红黑树、B树、B+树等。
二叉树定义:是N(N>=0)个节点的有限集合。该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。
普通二叉树(图源网络)
特点:
每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
左子树和右子树是有顺序的,次序不能任意颠倒。
即使树中某结点只有一棵子树,也要区分它是左子树还是右子树
二叉树又有满二叉树和完全二叉树,在此不做详解。
二叉查找树定义:二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。
特点
若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若右子树不空,则右子树上所有结点的值均大于 ...
MySQL事务与锁机制
什么是事务MySQL支持事务的储引擎:InnoDB
事务是一条或者一组SQL操作语句。
事务的四大特性:A (atomicity)、C(consistency)、I(isolation)、D(durability)。
满足以上特性的事务操作,才能被称作完整的事务。
事务的四大特性A(atomicity)原子性 :指一个事务中的所有的操作,要么全部完成,要么全部失败回滚。即像化学中的原子一样是最小单位,不能被分割 。在数据库中是由undo Log(回滚日志) 来实现的。
D(Durability)持久性:事务结束之后对数据的改变是永久的,不会因为外界的干扰而导致数据更改。在数据库中是由redo Log 来实现的。
I(Isolation)隔离性:数据库允许多个事务并发的对数据库同时操作,隔离性可以防止多个事务并发执行而导致的数据不一致。隔离又分为多个隔离级别。在数据库中是由即基于锁的并发控制LBCC(Lock-Based Concurrent Control)+ 多版本并发控制(MVCC)实现的。
C(Consistency)一致性:事务开始前后没数据没有 ...
MySQLMVCC机制
数据库事务的四大特性:
原子性:atomicity 是通过undo log 来实现的。
一致性:consistency 原子性、隔离性、持久性来共同保持一致性。
隔离性:isolation 通过加锁以及MVCC来实现的。
持久性:durability 是通过redo log 实现的。
什么是MVCC?MVCC(Multi - Version - Concurrency - Control)全称是多版本并发控制。主要是为了提高数据库的并发性能。MVCC只在读已提交和可重复读的两个事务级别下有效。主要是用于处理读请求。
MySQL的快照读和当前读是什么?当前读他读取数据库记录都是当前最新的版本,会对当前读取的数据进行加锁,防止其他的事务对数据修改,属于悲观锁的一种。
以下操作都是当前读:
1234567891011select lock in share mode # (共享锁)select for update #(排他锁)update # (排他锁)insert #(排它锁)delete #(排它锁)# 串行化事务隔离级别
快照读快照读是基于和 un ...
DockerSwarm理解
一、DockerSwarm理解
官网解释:
Docker Engine 1.12 introduces swarm mode that enables you to create a cluster of one or more Docker Engines called a swarm. A swarm consists of one or more nodes: physical or virtual machines running Docker Engine 1.12 or later in swarm mode.
Docker Engine 1.12 引入了 swarm 模式,使您能够创建一个由一个或多个 Docker 引擎组成的集群,称为 swarm。 swarm 由一个或多个节点组成:在 swarm 模式下运行 Docker Engine 1.12 或更高版本的物理或虚拟机。
官网地址
1、Swarm 中有两种类型的节点:1.1、managers 的作用
维护集群状态
集群调度
给集群提供API
Swarm 使用Raft来保证分布式一致性。
Raft 是一种更 ...
DockerCompose知识总结
一、DockerCompose理解
Docker Compose is a tool that was developed to help define and share multi-container applications. With Compose, we can create a YAML file to define the services and with a single command, can spin everything up or tear it all down.
The big advantage of using Compose is you can define your application stack in a file, keep it at the root of your project repo (it’s now version controlled), and easily enable someone else to contribute to your project. Someone would only ...
Docker网络和存储
一、Docker网络和存储.1. Docker三种网络1、 bridge 桥接网络
如果在创建容器时不指定网络,会默认将容器连接到此网络中, 使用bridge 时 宿主机可以ping通容器。容器也可以ping通宿主机,容器之间也可以相互ping通。容器之间只能通过IP访问,由于容器的IP会在重启时发生变化,因此不推荐使用IP访问。
2、Host 网络
使用host网络可能会有安全问题。 host 模式是与宿主机共享网络,不需要映射端口即可通过宿主机IP访问, -p 选项会被忽略。 此模式可用于优化网络性能,在容器需要处理大量端口的情况下,他不需要网络地址转换(NAT),并且不会为每个端口创建用空间代理。
3、none
禁用容器中的所有网络,自启动容器时使用。
2. 自定义网络那么我们想要我们的服务之间相互通信,如何设置网络 –> 可以使用自定义网络。
(在自定义网络中docker会使用内嵌的DNS服务器将容器名解析成IP)
查看有哪些自网络
1docker network ls
查看某个网络的信息
1docker inspect <网络名称>
创建自定义网络
1doc ...
Docker知识总结
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.
一、Docker 是什么1、Dock ...
Typora设置七牛云图床
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。 如GitHub、Reddit、Diaspora、[Stack Exchange](https://baike.baidu.com/item/Stack Exchange/13777796)、OpenStreetMap 、SourceForge、简书等,甚至还能被使用来撰写电子书。
一、设置前提:Typora 版本:0.11.8|已注册七牛云账号:
秘钥AK :virqOxxxxxxxxxxxxxxxxxxxxxxxxMnNIK
秘钥SK:dDFGSasdfxxxxxxxxxxxxxxxxxxxiZiOVu
存储空间名称:cz-tuchuang
自定义域名:https://origin. ...