testing-04

技术细节

  • 也说快速关闭MySQL/InnoDB

    ·

    如果用的引擎是InnoDB,每次敲下mysqladmin -uroot -p shutdown关闭数据库的时候,总是很难预测这个命令会执行多久,实际经验表明,短则五秒,长则三十分钟一小时都有可能。也分享一下我的经验吧。

    1. 为什么InnoDB关闭会慢?

    事实上,并不是每次关闭InnoDB都很慢的。Why?InnoDB较之MyISAM,一个重要特性是InnoDB会在内存中开辟一个Buffer Pool来存储最近访问的数据块/索引块,使得下次再次访问这个块时速度能够很快。当InnoDB对需要修改数据块的时候,会先记录修改日志,然后直接对Buffer_Pool中的数据块的操作。记录日志是顺序写,对数据块的操作是内存操作,这让InnoDB在很多场景下有这很好的速度优势。 (more…)

  • 编写一个shell脚本,做一些事;改进这个脚本,更好做这件事;再改进这个脚本,帮自己做些其他的事情;再改进这个脚本帮助其他人做一些事……

    简单的脚本处理,一般使用变量$0 $1 $2 …就可以依次获得全部参数,还可以通过$#获得这个脚本一共有多少个参数。如果你需要处理的情况(或者分支)更多的时候,这个方法就不凑效了,这时候,就可以考虑使用getopts了(man getopts)。

    (more…)
  • Linux iostat监测IO状态

    ·

    Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。

    1. 基本使用

    $iostat -d -k 1 10

    参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。 (more…)

  • 本文试图从硬件结构、逻辑结构两方面来介绍Linux中本地磁盘的基本知识。

    1. 硬件结构

    一块磁盘由多个盘面组成,每个盘面有一个对应的磁头(heads),我们可以在该盘面上存储我们需要的信息。

    每一个盘面,被分成多个圆环,我们称之为柱面(cylinders)。每一个柱面又被分割为多个扇形区域,简称扇区(sectors),参见下图:

    磁盘扇区(图片来源www.eygle.com/

    两个红色环形之间是一个柱面;图中黄色标记部分是一个扇区。 (more…)

  • Linux下C语言连接MySQL

    ·

    相对于Window下的设置,Linux要简单的很多。

    1. 示例程序

    $ vi mysql-c-api.c #include <stdio.h> #include "mysql/mysql.h" int main(){ MYSQL mysql; mysql_init(&mysql); mysql_options(&mysql,MYSQL_OPT_COMPRESS,0); mysql_options(&mysql,MYSQL_INIT_COMMAND,"SET autocommit=0"); if (!mysql_real_connect(&mysql,"10.2.3.4","user","passwd","database",0,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %sn", mysql_error(&mysql)); } return 0; }

    2. 编译命令

    在MySQL编译后的二进制文件中,有一个很有用的二进制文件“mysql_config”(一般和mysql命令在同一个目录下),我们可以通过这个程序找到需要的头文件和连接库:

    $ gcc -o a.out $(mysql_config --cflags) mysql-c-api.c $(mysql_config --libs) $ ./a.out
  • Sphinx之配置篇

    ·

    作者:周振兴 mail
    摘要:MySQL提供了LIKE子句可以很好的实现对数据库中数据的模糊搜索,使用LIKE很多时候可以帮助我们解决一些站内搜索的问题。但是随着MySQL中数据量逐渐增加,LIKE模糊查询的效率将成为MySQL数据库的主要压力。这时候尝试使用sphinx,可以很好的帮你解决这个问题。本文将继续介绍具体如何部署sphinx。在阅读本文前,建议先浏览sphinx使用介绍(前篇),或者跳过本文直接RTFM

    (more…)