MySQL探秘(四)MySQL事务与锁详解

1.什么是事务   1.1 事务的定义   事务(Transaction)是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由 一个有限的数据库操作序列构成;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务。 这里面有两个关键点,第一个,它是数据库最小的工作单元,是不可以再分的。第 二个,它可能包含了一个或者一系列的 DML 语句,包括 insert delete update。(单条 DDL(create drop)和 DCL(grant revoke)也会有事务)   1.2 哪些存储引擎支持事……

继续阅读»»»

MySQL探秘(三)MySQL索引原理

一、索引介绍 1.1什么是索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 1.2为什么要用索引 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 首先数据是以文件的形式存放在磁盘上面的,每一行数据都……

继续阅读»»»

MySQL探秘(二)MySQL存储引擎

1.什么是存储引擎? 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。 2.MySQL 5.7 支持的存储引擎 MySQL 支持多种类型的数据库引擎,可分别根据各个引擎的功能和特性为不同的数据库处理任务提供各自不同的适应性和灵活性。在 MySQL 中,可以利用 SHOW ENGINES 语句来显示可用的数据库引擎和默认引擎。 MySQL 提供了多个不同的存储引擎,包……

继续阅读»»»

MySQL探秘(一)MySQL 基础架构分析

1.1MySQL 基本架构概览   下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用 架构示意图,可以理解出SQL语句在MySQL的各个功能模块中的执行过程。 简单来说 MySQL 主要分为 Server 层和存储引擎层: Server 层: 主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数(如日期、时间、数学和加密函数等)等,还有一个通用的……

继续阅读»»»

kubernetes实践(八)Kubernetes的Configmap和Secret

一.Configmap 1.简介 核心用途就是容器和配置的分离解耦。 应用场景:镜像往往是一个应用的基础,还有很多需要自定义的参数或配置,例如资源的消耗、日志的位置级别等等,这些配置可能会有很多,因此不能放入镜像中,Kubernetes中提供了Configmap来实现向容器中提供配置文件或环境变量来实现不同配置,从而实现了镜像配置与镜像本身解耦,使容器应用做到不依赖于环境配置。 如启用一个mysql容器,mysql容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件my.cnf,存储数据可以用持久存储实现和容器的分离解耦,配置文件也能够实现和容器的分离解耦,也就是说mysql容器能够……

继续阅读»»»

kubernetes实践(七)Kubernetes实战

一.wordpress+mysql案例 1.创建wordpress命名空间 kubectl create namespace wordpress 2.根据wordpress-db.yaml创建资源 wordpress-db.yaml文件 apiVersion: apps/v1beta1 kind: Deployment metadata: name: mysql-deploy namespace: wordpress labels: app: mysql spec: template: metadata: labels: app: mysql spec: containers: – name:……

继续阅读»»»

kubernetes实践(六)pod的存储

1.Volume简介 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。 本质上,Kubernetes Volume 是一个目录,这一点与 Docker Volume 类似。当 Volume 被 mount 到 Pod,Pod 中的所有容器都可以访问这个 Volume。Kubernetes Volume 也支持多种 b……

继续阅读»»»

kubernetes实践(五)pod的网络通信

一.pods的通信 1.集群内同一Pod内的容器通信 在同一个Pod内的容器共享同一个网络命名空间,共享同一个Linux协议栈。所以对于网络的各类操作,就和它们在同一台机器上一样,它们可以用localhost地址直接访问彼此的端口。其实这和传统的一组普通程序运行的环境是完全一样的,传统的程序不需要针对网络做特别的修改就可以移植了。这样做的结果是简单、安全和高效,也能减少将已经存在的程序从物理机或者虚拟机移植到容器下运行的难度。   2.集群内pod之间的通信 (1)两个pod在同一台主机 Pod1与Pod2在同一台主机。Pod1和Pod2在同一台主机的话,由Docker0网桥直接转发……

继续阅读»»»

kubernetes实践(四)组件创建及命令

一.pods 1.Namespace (1)创建命名空间 文件方式 kubectl create/apply -f myns-namespace.yaml 命令方式 kubectl create namespace myns myns-namespace.yaml 文件 apiVersion: v1 kind: Namespace metadata: name: myns (2)查询命名空间 kubectl get namespaces/ns (3)删除命名空间 文件方式 kubectl delete -f myns-namespace.yaml 命令方式 kubectl delete nam……

继续阅读»»»

kubernetes实践(三)yaml文件详解

1.yaml文件简介 YAML(IPA: /ˈjæməl/)是一个可读性高,专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式 理解:Yet Another Markup Language 后缀:可以是.yml或者是.yaml,更加推荐.yaml,其实用任意后缀都可以,只是阅读性不强 2.yaml规则 它的基本语法规则如下: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 是JSON文件的超级,两个可以转换 ……

继续阅读»»»