0%

在文件系统中,MySQL将每个数据库(也被称为schema)保存为数据目录下的一个子目录。在创建表的时候,MySQL会在数据库子目录下创建一个和表同名的 .frm 文件对表的定义。例如,创建一个名为 mytable 的表,MySQL会在 mytable.frm 文件中保存对该表的定义。

通常,我们可以使用 show table status 命令来显示表的相关信息。(MySQL 5.0 + 的版本,也可以查看 INFOMATION_SCHEMA 中对应的表的信息)。
例如,对于MySQL数据库中的 user 表:

mysql> show table status like 'user' \G;
*************************** 1. row ***************************
           Name: user
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 14
 Avg_row_length: 63
    Data_length: 952
Max_data_length: 281474976710655
   Index_length: 2048
      Data_free: 64
 Auto_increment: NULL
    Create_time: 2012-12-25 14:23:08
    Update_time: 2015-08-11 11:17:42
     Check_time: NULL
      Collation: utf8_bin
       Checksum: NULL
 Create_options:
        Comment: Users and global privileges
1 row in set (0.01 sec)
阅读全文 »

MySQL中大多数事务型的存储引擎都不是简单的行级锁。为了提高并发性,他们一般会采用多版本并发控制(MVCC,一种行级锁的变种)来使很多情况下在避免加锁的情况下就实现并发操作,从而是的系统开销更低。

MySQL的InnoDB存储引擎的MCVV,是通过在每行记录后面保存两个隐藏的列来实现。一个保存行的创建时间,另一个保存过期时间。当然这里所说的时间并不是实际时间,是系统版本号。数据库系统在每开始一个事务,其系统版本号就会自动递增。一个事务开始时刻,事务会去当前的系统版本号作为当前事务的事务版本号,用来和查询到的每行记录的版本号做比较。

id fields … create_version delete_version
1 …. 1
2 …. 2 3
阅读全文 »

数据库中的事务就是一组原子行的SQL查询,或者说一个独立的工作但愿。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。

ACID表示原子性(atomicity)、一致性(consistency)、隔离行(isolation)和持久性(durability)。一个运行良好的事务处理系统,必须具备这些特征。

一个实现了ACID的数据库,相比于没有实现ACID的数据库,通常需要更强的CPU,更大的内存,更多的存储空间。所以对于一些不需要事务支持的查询类型应用,选择一个非事务型的存储引擎,是可以获得更高的性能的。

阅读全文 »

根据控制的不同层次,MySQL的并发控制可以分为:

  • 服务器层
  • 存储引擎层

实现并发控制的方法策略:锁机制

  • 共享锁(shared lock)<======> 读锁(read lock)
  • 排它锁(exclusive lock) <======> 写锁(write lock)

如何选择适合的锁?锁策略

  • 锁的粒度越小,系统的并发性越高
  • 所得操作越多,系统的开销越大

    所以所谓的锁策略,就是在锁的开销和数据的安全性之间寻求平衡。

阅读全文 »

通常MySQL架构有两种划分,一种划为两层架构,另一种划为三层。
两层架构划为MySQL服务器层和存储引擎层,三层架构则把MySQL层又划为两层。

MySQL架构图

阅读全文 »

Apache通过不同的方式,能够实现对PHP支持。常见的几种支持方式有:

  • 模块支持(handler模式)
  • CGI模块
  • FastCGI模式,用Apache内置进程管理器
  • FastCGI模式,用php-fpm进程管理器
阅读全文 »

虚拟主机指的是在单一机器上运行多个网站。

  • 常见的共有三种不同的配置方式。
    • 基于域名
    • 基于端口(需要增加相对应的 Listen 指令)
    • 基于IP
  • 动态虚拟主机配置。
阅读全文 »

URL重定向是.htaccess 的重头戏,它可以将长地址转为短地址、将动态地址转为静态地址、重定向丢失的页面、防止盗链、实现自动语言转换等等。

难点: 正则表达式的运用和理解。

阅读全文 »

Apache的分层体系结构

最新版本的Apache按照其功能一般会被划分为五层,

  1. 操作系统平台功能层

    各操作系统本身提供的底层功能,比如进程、线程管理,进程和线程之间通信、网络套接字通信、文件操作等

  2. 可移植运行库层(操作系统适配层)

    封装不同操作系统的底层细节,向上提供统一的接口。

  3. Apache核心功能层

    提供最基本的HTTP服务功能,对其他模块提供对应的API。

  4. Apache可选功能层

    这一层通常指 Apache模块,Apache核心功能层提供不了的功能交给不同的Apache模块来处理。

  5. Apache第三方功能层

    Apache的一些模块中用到的一些第三方开发的类库等

Apache的分层体系结构

阅读全文 »

谈到服务器性能监控,目前市面上有很多成熟的关于性能监控的产品可供我们使用。比如 Cloud Insight
。但通过 Apache本身提供的监控模块或者通过一些简单的bash命令也能实现简单的监控。

阅读全文 »