mysql的text/blob和行溢出
blob存储二进制,text存储文本,前者可当做大个的varbinary,而后者可看成升级版的varchar(与long varchar等价);两者都有4种子类型:tiny,normal(默认),medium和long,区别就在可存储的数据长度不一样;而int更是有5个子类型:tiny(1字节),small(2字节),medium(3字节),normal(默认,4字节),big(8字节);...
压力测试工具之mysqlslap
mysqlslap是一个mysql官方提供的压力测试工具。以下是比较重要的参数:–defaults-file,配置文件存放位置–concurrency,并发数–engines,引擎–iterations,迭代的实验次数–socket,socket文件位置- only-print,只打印测试语句而不实际执行自动测试:–auto-generate-sql,...
监控mysql之orzdba和orztop
这两款工具都是基于perl,由淘宝DBA朱旭编写。Orzdba将MySQL性能统计信息进行计算,统计MySQL/INNODB层面的各种指标(QPS/TPS/thread/buffer/log等), 将OS和MySQL统计参数放在一个屏幕中展现。可选项 -L,--logfile Print to Logfile....
mysqldump的single-transaction和master-data
先看一下--lock-tables和--lock-all-tables --lock-all-tables一次性锁定所有数据库的所有表,在整个dump期间一直获取global read lock;该选项自动关闭—lock-tables和—single-transaction;--lock-tables以database为单位,dump前锁定其下所有表;如果是Myisam表则采用 read local模式,允...
memcache的线程模型
MC采用一master多worker的工作模型,由master负责accept客户端请求,然后以RR分发给worker;-t 线程数,用于处理请求,默认为4 -b backlog队列长度,默认1024 线程结构体 typedef struct { pthread_t thread_id;&n...
memcache的内存分配和重用机制
众所周知,memcache采用slab allocator管理内存,启动由-m指定可用的最大内存值(默认64M),默认是使用时再分配,-k可提前分配内存并锁定;每个slab包含若干大小为1M的内存页,这些内存又被分割成多个chunk,每个chunk存储一个item;在mc启动初始化时,每个slab都预分配一个1M的内存页,由slabs_preallocate ...
nginx proxy cache的实现原理
除了proxy cache,nginx还可对fastcgi的响应数据进行缓存,即fastcgi_cache,两者的配置和实现原理是一致的; 本文以fastcgi_cache为例,描述一下其实现原理,主要参考链接http://www.tuicool.com/articles/QnMNr23先回顾一下配置参数 proxy_cache_path:缓存的存储路径和索引信息; &n...
nginx proxy cache的配置实现
先了解一下http是如何使用和管理缓存的开启缓存时,http请求的流程如下1 接收请求,解析请求头2 查询本地副本3 新鲜度检测,验证副本是否足够新鲜4 创建响应并发送新鲜度检测expires:指定绝对过期日期,cache-control:http1.1引入,以秒为单位,为相对过期日期;服务器再验证文档过期不代表已经修改,缓存需要...
tpcc-mysql的工作原理
1 背景 TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能;Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试,其源码放在bazaar上,因此需要先安装baza...
sysbench的实现原理
1 简介 SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试: 1、cpu性能 2、磁盘io性能 &n...
TCP segmentaion 和 checksum offload
为什么要offloading?TCP的分片和校验和计算原本都由CPU完成,最新的网络适配器实现了硬件级别的分片和校验和计算,减轻了主机CPU的负担从而提升本机网络包的吞吐量; 原理当数据包被内核tcp/ip 栈传递到驱动的时候, tcp/ip栈并不会利用CPU来进行tcp checksum的计算。所以在这个时刻,这个tcp check...
mysql_safe和mysql_multi
1 mysql_safe原理mysqld_safe其实为一个shell脚本(封装mysqld),启动时需要调用server和database(即/bin和/data目录),因此需要满足下述条件之一:1 /bin和/data和mysql_safe脚本位于同一目录;2 如果本地目录找不到找到/bin和/data,mysqld_safe试图通过绝对路径定位(/usr/local);shell> cd mysql_...
mysql 5.6 binlog组提交实现原理
Redo组提交 Redo提交流程大致如下 lock log->mutex write redo log buffer to disk unlock log->mutex fsync Fsync写磁盘耗时较长且不占用log->mutex,也就是其执行期间其他线程可以write log buffer; 假定一次fsync需要10ms,而写buffer只需要1ms,则fsync执行期间最多可以有10条redo re...
linux的中断负载均衡和RPS
中断类型 异常:又叫同步中断,由cpu产生,只有在一条指令终止后CPU才发出中断;取决于eip的值,又可分为故障fault,陷阱trap和中止abort; 中断:硬件外设依照CPU时钟信号随机产生的;分为 可屏蔽和不可屏蔽; 两者分别又称为软件中断(不是软中断)和硬件中断,本文只描述后一种; 硬件中...
日志管理工具logrotate
1运行原理Logrotate是基于CRON来运行的,其脚本是/etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate/etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ];then /usr/bin/logger -t logrotate "ALERT exited abnormally with[$EXITVALUE]"fiexit 0&nbs...
nginx处理http请求流程
监听套接字ngx_listenting_t->fd由获取accept_mutex的worker进程加入epoll监控,其handler为ngx_event_accept;注:每个fd赋予一个ngx_connection_t,且c->read->handler =ngx_event_accept(详见ngx_event_process_init);当客户端发起新连接时,epoll_wait返回,将其加入accepted队列,然后调用ngx_event_accep...