MySQL:一条 SQL 的执行过程详解 到此,关于Buffer Pool、Redo Log Buffer 和undo log、redo log、bin log 概念以及关系就基本差不多了。我们再回顾下Buffer Pool 是 MySQL 的一个非常重要的组件,因为针对数据库的增删改操作都是在 Buffer Pool 中完成的Undo log 记录的是数据操作前的样子redo log 记录的是数据被操作后的样子(redo log 是 Innodb 存储引擎特有)
Linux系统目录结构介绍 bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
Docker: Docker Vs. 虚拟机 在计算机技术中,虚拟化(Virtualization)是一种资源管理技术。它是将计算机的各种实体资源,如:服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用更好的方式来利用这些资源。虚拟化的目的是为了在同一个主机上运行多个系统或应用,从而提高系统资源的利用率,并带来降低成本、方便管理和容错容灾等好处。Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到安装了任何 Linux 发行版本的机器上。
Redis:缓存 一个是查询操作,一个是更新操作的并发,首先,没有了删除cache数据的操作了,而是先更新了数据库中的数据,此时,缓存依然有效,所以,并发的查询操作拿的是没有更新的数据,但是,更新操作马上让缓存的失效了,后续的查询操作再把数据从数据库中拉出来。缓存空间是有限的,如果缓存空间满了,再往缓存里写数据时就会有额外开销,影响Redis性能。不是的,比如,一个是读操作,但是没有命中缓存,然后就到数据库中取数据,此时来了一个写操作,写完数据库后,让缓存失效,然后,之前的那个读操作再把老的数据放进去,所以,会造成脏数据。
Redis:分片技术(Redis Cluster)详解 前面两篇文章,和保障了高可用,就读写分离而言虽然slave节点扩展了主从的读并发能力,但是和是无法进行扩展,就只能是master节点能够承载的上限。如果面对海量数据那么必然需要构建master(主节点分片)之间的集群,同时必然需要吸收高可用(主从复制和哨兵机制)能力,即每个master分片节点还需要有slave节点,这是分布式系统中典型的纵向扩展(集群的分片技术)的体现;所以在Redis 3.0版本中对应的设计就是Redis Cluster。
Redis:主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。主从复制的作用数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。负载均衡。
Redis:事务 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
Redis:持久化 压缩:Redis 默认采用 LZF 算法对生成的 RDB 文件做压缩处理,压缩后的文件远远小于内存大 小,默认开启,可以通过参数 config set rdbcompression {yes|no} 动态修改。2)父进程执行fork创建子进程,fork过程中父进程会进行阻塞,通过 info stats 命令查 latest_fork_usec 选项,可以获取最近⼀次 fork 操作的耗时,单位为微秒。AOF 的主要作用是解决了数据持久化的实时性,目前已经是 Redis 持久化的主流方式。
Redis:常用命令总结 ziplist(压缩列表):当有序集合的元素个数小于 zset-max-ziplist-entries 配置(默认 128 个),同时每个元素的值都小于 zset-max-ziplist-value 配置(默认 64 字节)时,Redis 会用 ziplist 来作 为有序集合的内部实现,ziplist 可以有效减少内存的使用。type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列 表)、hash(哈希)、set(集合)、zset(有序集合),
MySQL:函数式编程连接MySQL库 我们可以在ld.so.conf 文件中指定很多目录(/lib 和 /usr/lib 除外,它们会自动包含在其中),动态装入器将在其中查找共享库,文件中所有的路径都会被搜索到。文件,它反映了我们对 /etc/ld.so.conf 所做的更改。执行完mysql_store_result以后,其实数据都已经在MYSQL_RES 变量中了,下面的api基本就是读取MYSQL_RES 中的数据。该函数会调用MYSQL变量中的st_mysql_methods中的 read_rows 函数指针来获取查询的结果。
MySQL:用户管理 这里root创建一个test的数据库,并将数据库内任意表的权限全部给与user01用户。这里的user()是个函数,相当于调用了此函数去查询当前用户的信息。是指,将root用户的数据库读取等权限赋予你所指定的用户。注:查看权限也需要在root权限下!刷新系统权限表,即时生效。
MySQL:事务(概念&操作&隔离) 在MySQL中,我们把共同完成一个功能而组成的多条SQL语句,称为一个事务。一个事务最重要的问题就是:不能被打断,即原子性,一个事务要么还没开始,要么已经完成。另外的,一个数据库中,一般不止一个用户在操作,如果一个用户正在修改数据,另一个用户在读取数据,也会导致错误。此时就需要对多个事务进行隔离。一个完整的事务,包含以下四个特性:以上四个特性简称为。通过指令,查看各个引擎的信息:其中表示事务,主流引擎中支持事务,而不支持事务。表示打开自动提交,自动提交情况下每一条语句都会被视为一个事务,为了让我们的事
MySQL:常用函数 函数用于格式化小数点位数,第二个参数表示要保留的小数点位数。四个字符,由于是中文字符,所以最后占用了。函数用于对密码加密,原理也是哈希函数。用于截取字符串,其第三个参数可省略。用于替换字符串中的指定字串。函数用于生成随机数,范围是。函数用于对一个字符串通过。加密后的数据位数更多些。
MySQL:基本查询操作 观察一下之前的查询,会发现我们一直在对列做限制,而每次查询出来的行数目是一样的。如果说我们想对数据的值做限制,比如“数学成绩大于等于60分”,那么就需要。在计算表达式时,如果指定了表,那么这个表有几行,表达式就计算多少次。这次的查询中,没有指定表名,也没有使用表的列,那么表达式默认只计算一次,输出一行。假设已经查询好数据,排序完成了,如果只需要取用前三条数据,这要如何完成?插入失败时,只替换部分指定的值,保留部分原先的值。MySQL中,有两种删除数据的方法,分别是。插入时,也可以直接替换,只需把。
MySQL:表的约束 每次插入数据时,如果没有指定自增长的列,那么该列填入auto_increment,随后auto_increment + 1。如果指定了自增长的列,那么就把插入的值与auto_increment对比,如果新来的值更大,就更新auto_increment的值为新来的值 + 1。它对列的约束不是硬性的,而是给维护该数据库的程序员看的,当程序员看到该列的列描述后,就知道这个列要放入什么数据,从而形成一个软性约束。主键用于约束每一行数据之间的唯一性,被指定为主键的列不允许重复,不能为空,且一张表只能有一个主键。