2017-04-06
InnoDB Page Compression MySQL文档翻译:InnoDB透明页压缩

原文:

[MySQL 5.7 Reference Manual 15.9.2 InnoDB Page Compression]

https://dev.mysql.com/doc/refman/5.7/en/innodb-page-compression.html

InnoDB支持file-per-table表空间中的表的页级压缩。 此功能称为透明页压缩。 通过使用CREATE TABLE或ALTER TABLE指定COMPRESSION这个表属性来启用页面压缩。 支持的压缩算法包括Zlib和LZ4。

支持的平台

页面压缩需要稀疏文件(sparse file)和打洞(hole punching)支持。 页面压缩在使用NTFS的Windows上被支持,并且在以下MySQL支持的Linux平台发行版的内核级别提供了打孔支持:

  • RHEL 7 and derived distributions that use kernel version 3.10.0-123 or higher

  • OEL 5.10 (UEK2) kernel version 2.6.39 or higher

  • OEL 6.5 (UEK3) kernel version 3.8.13 or higher

  • OEL 7.0 kernel version 3.8.13 or higher

  • SLE11 kernel version 3.0-x

Read More
 2017-03-31
InnoDB Page Structure -- High-Altitude View MySQL文档翻译:InnoDB页宏观结构

原文 [MySQL Internals Manual 22.2.1 High-Altitude View] https://dev.mysql.com/doc/internals/en/innodb-page-overview.html

0. 概述

InnoDB的页有7个部分:

+----------------------------+
| Fil Header                 |
+----------------------------+
| Page Header                |
+----------------------------+
| Infimum + Supremum Records |
+----------------------------+
| User Records               |
+----------------------------+
| Free Space                 |
+----------------------------+
| Page Directory             |
+----------------------------+
| Fil Trailer                |
+----------------------------+

你可以发现,每个页有头尾(header/trailer)对。靠内的头尾对(Page Header和Page Directory)主要是由page程序组的所关注的,而外部的头尾对(Fil Header和Fil Trailer)主要是fil程序组的关注 。 Fil Header也被称为“文件页头(File Page Header)”。

Read More
 2017-03-30
在awk中如何使用或赋值shell的变量

写shell脚本处理文本的时候,经常用到awk来配合shell命令。但是awk的大括号中和shell貌似是两个世界。本文只介绍最容易理解的方法(作者水平有限,复杂的以后可能补充),来实现awk对shell变量的使用和更改。

如果我们将awk看成变成语言中的函数,或者一个封装,那么要使用或者修改外部的变量,其实就是输入参数和输出返回值的问题。对于使用shell变量,其实就是shell变量怎么作为参数传入awk的问题;而对于awk给shell变量赋值,可以看成awk输出返回值的问题。

awk中使用shell变量

awk传入参数的选项是-v [awk_var=$SHELL_VAR],应该加在' '包围的awk主体程序之前。

示例脚本1:

#!/bin/bash

VAR1="~~~!"
echo hello, world|awk -v awk_var1=$VAR1 '{ print $1, "shell", $2, awk_var1 }'

输出:

hello, shell world ~~~!

awk给shell变量赋值

Read More
 2017-03-16
Optimizing InnoDB Disk I/O MySQL文档翻译:优化InnoDB磁盘I/O

原文:8.5.8 Optimizing InnoDB Disk I/O

这页感觉比较重要,翻译一下。。

如果你遵循了数据库设计和SQL操作调优的最佳实践,但是数据库仍然由于磁盘I/O负载过重而运行慢,请考虑这些磁盘I/O优化方法。如果Unix top工具或Windows任务管理器显示你的工作负载的CPU使用率百分比小于70%,那么你的数据库系统瓶颈在于磁盘。

增加缓冲池(buffer pool)的大小

当表中数据被缓存到InnoDB的buffer pool中时,对它的查询请求就不会引起任何磁盘I/O请求。使用innodb_buffer_pool_size选项就可以指定buffer pool的大小。buffer pool这块内存很重要,所以通常建议将innodb_buffer_pool_size配置为系统内存的50%到75%。 有关更多信息,请参见第9.12.4.1节“MySQL如何使用内存”。

调整刷新方法

在某些版本的Linux或Unix中,使用Unix fsync()调用(InnoDB默认用它)或其他类似调用将文件刷入磁盘的速度是非常慢的。如果数据库的写入性能有问题,请在执行基准测试时将innodb_flush_method参数设置为O_DSYNC。

noop和deadline两种I/O调度程序的选择

InnoDB在Linux上使用异步I/O子系统(naive AIO)来执行数据文件页的预读操作和写请求操作。此行为由innodb_use_native_aio选项进行控制,默认情况下是启用的。 对于naive AIO来说,I/O调度程序(I/O Scheduler)的类型对I/O性能有很大的影响。一般来说,建议使用noop和deadline这两种类型的I/O调度程序。这里就应该进行测试以决定当前的环境和工作负载适合使用哪一个I/O调度器。有关更多信息,请参见第15.6.8节“在Linux上使用异步I / O”。

x86_64架构的Solaris 10上使用direct I/O

Read More
 2017-03-16
Optimizing Disk I/O MySQL文档翻译:优化磁盘I/O

原文: MySQL 5.7 Reference Manual — 9.12.2 Optimizing Disk I/O

本节将介绍当你决定更多更快的存储硬件设备投入到数据库服务器时,应该如何配置它们。 软件配置上优化InnoDB以提高I / O性能的信息,请参见第9.5.8节“优化InnoDB磁盘I/O”。

  • 磁盘寻道是一个巨大的性能瓶颈,当数据量剧增到使得缓存命中率减小时,这个问题会更为明显。对于或多或少会进行随机访问的大型的数据库,可以确定对于读至少需要一次磁盘寻道,而对于写需要好几次磁盘寻道。要最小化这个问题,应该用磁盘寻道时间较小的磁盘。

  • 增加可以用磁盘数,这样就可以通过符号链接将不同文件存储到不同磁盘,或者可以通过磁盘分条,来降低寻道开销。

    • 使用符号链接: 这意味着,对于MyISAM表,可以将索引文件和数据文件从它们在数据目录中的通常位置符号链接到另一个磁盘(也可能是条带化的)。假设磁盘不用于其他通途,那么这会使得查找和读取时间减小。详情请参见第9.12.3节“使用符号链接”。
    • 条带化: 分条意味着有多个磁盘使用的情况下,将第一个数据块放在第一个磁盘上,第二个块在第二个磁盘上,第N个块在(N对磁盘数取模)磁盘上,这意味着如果一般的数据大小小于条带大小(或者完全对齐),那么你将获得更好的性能。分条的性能非常依赖于操作系统和条带大小,因此应该设置不同的条带大小分别进行基准测试。详情请参见第9.13.2节“使用自己的基准”。

条带化的速度差异十分依赖于参数配置。根据如何设置条带化参数和硬盘数量,你可能会得到数量级的差异。对于优化随机访问还是顺序访问,你必须做出选择。

  • 为了可靠性,你可能需要使用RAID 0+1(条带加镜像),但在这种情况下,需要2×N个磁盘来N个磁盘的数据。如果你有足够的钱,这可能是最好的选择,而且,你可能还需要额外投资一些卷管理软件来有效地管理它们。

  • 一个好的选择是根据数据类型的关键程度来改变RAID级别。 例如,可以再生的一般重要数据可以放在RAID 0上,但将真正重要的数据(如主机信息和日志)存储在RAID 0+1或 RAID N磁盘上。 如果写入较多,则由于更新奇偶校验位需要时间,RAID N可能不太合适。

  • 你也可以设置数据库所涉及的文件系统的参数:如果您不需要知道上次访问文件的时间(这在数据库服务器上通常用途不大),则可以使用-o noatime选项来挂载文件系统。 这会跳过对文件系统上inode的最后访问时间的更新,从而避免某些磁盘寻道。在许多操作系统上,您可以通过使用-o async选项挂载文件系统以将其设为异步更新。 如果您的计算机相当稳定,这应该给你更好的性能,而不会牺牲太多的可靠性。 (在Linux上,此标志默认是打开的)

  • 对于使用NFS的MySQL,应该注意的潜在问题如下:

    • 放在NFS卷上的MySQL数据和日志文件变成锁定状态并且无法使用:锁定问题可能发生在多个MySQL实例访问相同数据目录或MySQL由于断电等而不正常关闭的情况下。 NFS版本4解决了咨询或租赁导致的锁定问题。 但是,MySQL实例之间共享数据目录是不被推荐的。

Read More
 2017-02-24
The UAPI header file split 翻译:内核源码中UAPI头文件分割

在LWN.net上的一篇文章,The UAPI header file split(By Michael Kerrisk July 25, 2012)。原文链接:https://lwn.net/Articles/507794/

这个特性已经在3.7版本中被Linus大神接受[详情]。。。Linus大神如是说:

 - the "uapi" include file cleanups. The idea is that the stuff
exported to user space should now be found under include/uapi and
arch/$(ARCH)/include/uapi.

   Let's hope it actually works. Because otherwise this was just a
totally pointless pain in the *ss. And regardless, I'm definitely done
with these kinds of "let's do massive cleanup of the include files"
forever.

下面我逐段意译一下文章。。。


Read More
 2017-01-09
从源码编译Qemu的流程及简述

要理解甚至修改Qemu,肯定要会编译它,不能老是apt-get,所以做个流程记录,并带上简单的解释。

1. 下载源码

http://wiki.qemu.org/Download 从这里下就可以了

2. 解压

比如我下载的是qemu-2.8.0.tar.bz2

# 解压
tar -xvf qemu-2.8.0.tar.bz2
# 进入源码目录
cd qemu-2.8.0

3. 配置

# 配置
./configure [--enable_debug --prefix=/PATH/TO/INSTALL --target_list=x86_64-softmmu]

Read More
 2016-12-30
Qemu KVM 虚拟机通过虚拟网桥实现桥接和NAT的实验

系统概况:

  • host 和 guest 都是用的 Ubuntu Server 16.04系统。
  • 我的 host 机上有三块网卡2块有线网卡(接口 enp1s0 和 enp3s0)和1个无线网卡(接口 wls2s0)。
  • 我的 host 机通过无线网卡连在一个路由器上,并因此能够连接到互联网,所在的网段是192.168.3.0\24,ip 固定为192.168.3.5。
  • 其他两块有线网卡没有连接。

实验0:

效果:

guest 与 guest、guest 与 host 之间可以互相 ping 通;guest 不能访问 host 所在路由器网段(192.158.3.0\24)。

方案:

在 host 中搭建了一个虚拟网桥,将 qemu-bridge-helper 工具在启动虚拟机时创建的虚拟网络接口 tap0[1,2...] 与 host 桥接在一起,我手动配置了他们的网段是192.168.4.0\24。

步骤:

1.配置 host 的 /etc/network/interfaces ,在其中加入以下内容,然后通过 /etc/init.d/networking restart 重启服务来创建网桥。

auto br0
iface br0 inet static
address 192.168.4.1 # br0 的 ip 在192.168.4.0\24
netmask 255.255.255.0 
#bridge_ports enp1s0 # 实验发现,这里没必要将 host 的实体接口桥接,所以注释了起来
bridge_ports none # 但是又发现,这里不设置这个参数会导致网桥创建失败,所以我们可以
                  # 写一个不存在的接口来混过这个检查,比如我这里写了个 none
bridge_stp on

Read More
 2016-12-20
C语言中结构体struct初始化和赋值的几种方式

http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-accordance-with-c-programming-language-standards

在内核中fs/ext3/indoe.c中,一个struct初始化格式个这样的:

static const struct address_space_operations ext3_writeback_aops = {
         .readpage               = ext3_readpage,
         .readpages              = ext3_readpages,
         .writepage              = ext3_writeback_writepage,
         .write_begin            = ext3_write_begin,
         .write_end              = ext3_writeback_write_end,
         .bmap                   = ext3_bmap,
         .invalidatepage         = ext3_invalidatepage,
         .releasepage            = ext3_releasepage,
         .direct_IO              = ext3_direct_IO,
         .migratepage            = buffer_migrate_page,
         .is_partially_uptodate  = block_is_partially_uptodate,
         .error_remove_page      = generic_error_remove_page,
};

我以前没见过这种形式,于是查了一下,原来这是属于C99的“新”特性。

初始化

对于最初(C89)一般形式的struct初始化,需要在大括号中按照成员顺序初始化,和初始化数组很类似;而C99支持乱序初始化,只要给出初始化的变量名,并且在前面加点,后边加等号即可。下面举例和c语言中一般形式的初始化结构体对比:

Read More
 2016-12-14
推荐一些简洁好用的Chrome插件

最近在实验室学习,chrome竟然称为了我使用的主要工具,不论是看博客或是看一些文档、论坛都离不开浏览器。chrome浏览器非常好用,通过登录google账号,可以同步设置、书签甚至插件。这里推荐几个我用的Chrome插件,能提高工作效率,大家根据名字都能搜到。

Octotree

可以在显示github网页左侧显示类似工程目录的侧边栏。

OneTab

可以一键将暂时没看完的标签收集起来,有时间(内存)时可以一键展开重新加载。

Tab Split

可以一键将标签栏的标签分开成两个窗口,防止标签太多开不清标题。

Vimium

可以用类似Vim的快捷键操纵浏览器。可以基本告别鼠标了。。。

# 我的Vimium按键映射配置
map <c-f> scrollFullPageDown
map <c-b> scrollFullPageUp
map <c-h> goBack
map <c-l> goForward
map <c-j> scrollLeft
map <c-k> scrollRight
map h previousTab
map l nextTab

Read More
 2015-12-10
Galileo开发板+opencv+微信公众平台实现简单的物联网家庭监控(2)

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ),以下功能做了改进:实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。通过connman实现了wifi网络的自动连接和随时修改功能。通过post到服务...

Read More
 2015-12-10
Intel Galileo开发版PCI-e无线网卡wifi配置

由于网上很多配置wifi的方式在我的伽利略开发板上都行不通,最后终于找到这个可以用的“冷门”办法:系统配置开发板: Intel Galileo gen2无线网卡:PCI-e intel wifi link 5100开发板系统: EGLIBC based Linux(download)所用工具硬件:usb无线网卡或者pci-e接口的无线网卡。(注意如果你用的是和我一样的pci-e网卡,注意顺便...

Read More
 2015-11-27
Galileo开发板+微信公众平台实现简单的物联网家庭监控

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。参考:《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/201...

Read More
 2015-11-04
鼓捣Galileo开发板的一些吐槽

这几天折腾伽利略开发板,写下一些吐槽,以便以后再看到这篇博客,仍然能记起这些值得吐槽的地方。。。也希望看到这篇博客的人能够因此少些吐槽( ╯□╰ )。。网上其实是有不少资源的,但是相对其他更热门的板子,显然找资料并不是和喝白开水一样简单,由于我表达能力较差,所以准备采用简述+大量站外链接的形式,给出一个希望不会让人误入歧途的引导。。。介绍Intel Galileo(点击查看中文官网),是一个...

Read More
 2014-04-09
只用OS X系统实现A8嵌入式试验箱(linux)的交叉编译

连接以电脑为终端,采用基于PL2302芯片的串口转USB线链接电脑和试验箱,MAC OS X系统需要安装芯片的驱动(文件名md_PL2303_MacOSX10_6_dmg_v1_4_0.zip)通过文件内说明文档进行相关设置,然后可以连接成功。Mac终端下用screen命令实现试验箱终端功能.screen /dev/tty.usbserial 115200>注意拔下USB时要用A(ct...

Read More
 2016-11-12
两台服务器间SSH或SCP实现无密码登录或文件传输

最近由于需要实现从一个客户端电脑定时远程上传图片到阿里云服务器的功能,需要实现SCP的免密码传输。所以查资料并做了一个记录,希望对大家有帮助。步骤1.Client上某用户执行ssh-keygen命令,生成建立安全信任关系的证书ssh-keygen -b 1024 -t rsa这里如果~/.ssh/id_rsa.pub 已经存在,说明以前已经生成过,可以直接跳过这步。2.将公钥证书id_rsa...

Read More
 2017-07-25
Steam是如何吸走我们的钱的(三)----从红警2说起

第一篇和第二篇文章中,我们分别从差异化定价和虚拟交易两个方面揭露了一下Steam的坑钱大法。今天要讲一下游戏内容了,毕竟人们来Steam主要是想玩游戏的。任何一款游戏发售之前,开发商都应该是设定好了游戏道具、游戏方式、各种参数等一切正常游戏进行需要的游戏内容。但是随着游戏时间加长,总有一天,游戏内容被玩家慢慢“消费”完,如果能减慢游戏内容的消耗时间,就能延长一款游戏的寿命,使游戏获得更多人认...

Read More
 2017-06-29
Steam是如何吸走我们的钱的(二)

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。集换式卡牌摘自百度百科集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的...

Read More
 2017-06-28
Steam是如何吸走我们的钱的(一)

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~什么是Steam摘自百度百科:Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一...

Read More
 2016-12-14
推荐一些简洁好用的Chrome插件

最近在实验室学习,chrome竟然称为了我使用的主要工具,不论是看博客或是看一些文档、论坛都离不开浏览器。chrome浏览器非常好用,通过登录google账号,可以同步设置、书签甚至插件。这里推荐几个我用的Chrome插件,能提高工作效率,大家根据名字都能搜到。Octotree可以在显示github网页左侧显示类似工程目录的侧边栏。OneTab可以一键将暂时没看完的标签收集起来,有时间(内存...

Read More
 2015-10-24
运用jekyll+Nginx+docker搭建博客的总结

博客由来今年暑假的时候就听说github上可以免费搭建静态博客。当时虽然看了看,但还是因为服务器、网页等知识欠缺太多,几次想动手都没有坚持下去。最近看了看Nginx的有关知识,算是对http服务器的搭建有了个大概了解。后来看到了docker,就买了《第一本docker书》这本书看了看,发现上边有些例子写的挺不错,其中就有jekyll+Apache搭建静态博客的例子,照着做一遍后,我决定用Ng...

Read More
 2015-10-08
折腾Docker的一些吐槽点

第一次构建Docker镜像,想照着书弄个jekyll的镜像玩玩,结果两天了,到现在还没成功。记录下国内环境实践和书本上的不同。。。首先官方的apt-get源太慢了要换成国内的速度还可以接受一点:(原文链接)做法:Dockerfile 中 RUN apt-get update 前添加一句:RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubun...

Read More
 2015-11-09
LeetCode第14题:Longest Common Prefix总结

题目Write a function to find the longest common prefix string amongst an array of strings.大意: 写一个函数,找到一组字符串的公共最长前缀。思路我的:定义一个不断更新的变量,存储当前的最长前缀,循环时加以一定的优化,比如如果下一个字符串比当前的前缀还长,那么可以截断前缀后在进行比较。参考的:这道题在disc...

Read More
 2015-11-01
LeetCode第8题:String to Integer (atoi)总结

题目:Implement atoi to convert a string to an integer.大意:就是手动实现C语言里常用的atoi函数。。。思路和吐槽:我最讨厌这种了,完全的信息不对称。。要讨论的情况只有不断提交才知道出题人什么意思,我怎么知道你要求的是什么,况且这是算法题又不是工程题。。。。幸亏这道题比较简单,多试几次也不太费时。代码Pythonclass Solution(...

Read More
 2017-03-30
在awk中如何使用或赋值shell的变量

写shell脚本处理文本的时候,经常用到awk来配合shell命令。但是awk的大括号中和shell貌似是两个世界。本文只介绍最容易理解的方法(作者水平有限,复杂的以后可能补充),来实现awk对shell变量的使用和更改。如果我们将awk看成变成语言中的函数,或者一个封装,那么要使用或者修改外部的变量,其实就是输入参数和输出返回值的问题。对于使用shell变量,其实就是shell变量怎么作为...

Read More
 2016-11-16
Shell脚本中进行多行注释的方法

我发现。。shell脚本貌似不像C或者Python一样自带注释语法,不过拐弯抹角还是有一些方法的。。囧方法1:利用逻辑语句利用了逻辑语句的执行顺序,缺点是注释中不能出现括号,否则会报错!###逻辑或前如果为真,后边的语句块自动不执行#1:||{ 注释内容...}#2((1))||{ 注释内容...}#3true||{ 注释内容...}###逻辑与前如果为假,后边的语句块自动不执行#4((0)...

Read More
 2016-04-02
Jc的sed简单入门/sed命令总结

这是我学习sed的一个总结,只限于自己和比我水平低(就是没接触过)的同学看。。。除了参考资料,讲解也包括很大成分的个人理解,如果发现错误,希望大家可以提醒我及时更正,谢谢~!sed概述sed是一个流编辑器,更准确的说是一个行编辑器,就是sed处理文本处理命令用于逐行处理文本中的文字。这是sed命令的格式: sed [options] [commands] [input-file]就是说sed...

Read More
 2016-03-29
Jc的常用Git命令记录

常用git,做个记录,方便查询,利人利己,如有错误,欢迎指正~创建仓库git init 创建仓库git clone xxx.git(远程库的地址) 克隆一个远程仓库git remote add origin xxx.git(远程库的地址) 指定一个远程仓库地址,命名为origin提交更改git rm file_name 删除文件git add file_name 添加文件到仓库暂存区(in...

Read More
 2017-04-06
OVERCOMMITTING WITH KVM 翻译:KVM虚拟机对硬件资源的超量分配

译者的废话这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N和-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是VPS超售...

Read More
 2016-12-30
Qemu KVM 虚拟机通过虚拟网桥实现桥接和NAT的实验

系统概况:host 和 guest 都是用的 Ubuntu Server 16.04系统。我的 host 机上有三块网卡2块有线网卡(接口 enp1s0 和 enp3s0)和1个无线网卡(接口 wls2s0)。我的 host 机通过无线网卡连在一个路由器上,并因此能够连接到互联网,所在的网段是192.168.3.0\24,ip 固定为192.168.3.5。其他两块有线网卡没有连接。实验0:...

Read More
 2016-11-02
qemu/qemu-kvm/qemu-system-x86_64/qemu-x86_64命令的区别?

刚想玩玩kvm,结果分不清这几个命令。。搜了一下,记录下来,希望对大家有帮助。摘抄1在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 --enable-kvm参数使能即可。(http://blog.csdn.n...

Read More
 2017-04-16
MySQL InnoDB透明页压缩的简单分析

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。1. 开启方法官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了...

Read More
 2017-03-16
Optimizing InnoDB Disk I/O MySQL文档翻译:优化InnoDB磁盘I/O

原文:8.5.8 Optimizing InnoDB Disk I/O这页感觉比较重要,翻译一下。。如果你遵循了数据库设计和SQL操作调优的最佳实践,但是数据库仍然由于磁盘I/O负载过重而运行慢,请考虑这些磁盘I/O优化方法。如果Unix top工具或Windows任务管理器显示你的工作负载的CPU使用率百分比小于70%,那么你的数据库系统瓶颈在于磁盘。增加缓冲池(buffer pool)的...

Read More
 2017-03-16
Optimizing Disk I/O MySQL文档翻译:优化磁盘I/O

原文: MySQL 5.7 Reference Manual — 9.12.2 Optimizing Disk I/O本节将介绍当你决定更多更快的存储硬件设备投入到数据库服务器时,应该如何配置它们。 软件配置上优化InnoDB以提高I / O性能的信息,请参见第9.5.8节“优化InnoDB磁盘I/O”。磁盘寻道是一个巨大的性能瓶颈,当数据量剧增到使得缓存命中率减小时,这个问题会更为明显。对...

Read More
 2017-05-07
FAST 16论文sRoute:treating the Storage Stack Like a Network学习记录

论文原文PDF: sRoute: treating the Storage Stack Like a Network出处:USENIX FAST 161. 概述数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest ...

Read More