摘要: Load与CPU利用率 这两个指标是衡量CPU繁忙程度的关键指标。load表示当前系统正在运行和等待运行的进程队列长度。load越高,表示对cpu资源竞争越激烈,处理器越多,可以支持load越高。 CPU利用率表示一定时间内使用CPU的效率,使用CPU的时间与占用CPU的时间的比值。 处理器核数增加 阅读全文
posted @ 2015-09-22 10:57 天士梦 阅读(3496) 评论(6) 推荐(4) 编辑
摘要: 在SQLite中,主要有两种表类型,带rowid的表和不带rowid的表。我们利用create table 建一张表,默认都会有一个隐含名字为rowid的主键,暂且称带rowid的表为普通表。如果建表时指定 WITHOUT ROWID属性,那么建的表就是不带rowid的表。那么这两种表有什么区别?这 阅读全文
posted @ 2015-09-10 08:15 天士梦 阅读(2714) 评论(0) 推荐(0) 编辑
摘要: 概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务。所谓支持事务,即需要在并发环境下,保持事务的ACID特性。事务的原子性,隔离性都需要通过并发控制来保证。那么Sqlite的并发控制是怎样的,如何实现,在这里跟大家分享下我的理解。 SQLite是一个文件数据库,所有的数据都在一个 阅读全文
posted @ 2015-08-27 11:57 天士梦 阅读(6790) 评论(0) 推荐(1) 编辑
摘要: 在生产环境中,DB服务器经常会被并发的慢查询压挂,因此事前进行sql审核避免烂SQL很重要。万一不小心慢sql还是跑到线上,并且并发还不小,这是dba肯定会收到告警。dba上线处理第一时间是定位并kill慢查询,避免慢查询其他正常的事务。本文主要围绕kill展开,并附带介绍几种相关的timeout参 阅读全文
posted @ 2015-08-25 09:42 天士梦 阅读(4779) 评论(2) 推荐(0) 编辑
摘要: Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然。 WAL是什么 WAL(Write ahead logging)是一种日志模式,它是一种思想,普遍应用于关系型数据库。每个事务 阅读全文
posted @ 2015-08-24 20:00 天士梦 阅读(17324) 评论(2) 推荐(1) 编辑
摘要: WAL是SQLite3.7.0版本引入的一个重大改进。SQLite官网宣称在很多使用场景下,WAL模型的性能都要好于默认的DELETE模式。下面将针对几个主要场景对WAL性能做测试,测试的硬件与xxx保持一致。 纯写场景 1) 测试说明 测试简单更新事务在WAL模式下与DELETE日志模式性能对比, 阅读全文
posted @ 2015-08-24 13:56 天士梦 阅读(5811) 评论(5) 推荐(1) 编辑
摘要: 测试目标 获取SQlite的常规性能指标 测试环境 CPU:8核,Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz 内存:16G 磁盘:SSD Linux 2.6.32 SQlite最新版本3.8.11 测试场景 1) 主键查询测试 2) 主键更新测试 3) 批量导入 阅读全文
posted @ 2015-08-17 22:39 天士梦 阅读(5847) 评论(3) 推荐(0) 编辑
摘要: sysbench简介 Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试:cpu性能,磁盘io性能,线程调度性能,内存分配及传输速度和数据库性能。由于本人是dba,因此重点关注sysbench测试数据库的场景... 阅读全文
posted @ 2015-08-12 18:16 天士梦 阅读(3550) 评论(0) 推荐(0) 编辑
摘要: Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中。 sqlite动态库非常小,最新的3.8.11版本也只有500k左右。sqlite虽然小,但功能并不弱,它支持sql-92标准中大部分SQL规范, 支持表, 阅读全文
posted @ 2015-08-12 08:02 天士梦 阅读(5243) 评论(0) 推荐(0) 编辑
摘要: 背景 dba的日常工作肯定有一项是ddl变更,ddl变更会锁表,这个可以说是dba心中永远的痛,特别是执行ddl变更,导致库上大量线程处于“Waiting for meta data lock”状态的时候。因此mysql 5.6的online ddl特性是dba们最期待的新特性,这个特性解决了执行d 阅读全文
posted @ 2015-07-11 21:40 天士梦 阅读(24032) 评论(4) 推荐(8) 编辑
摘要: FLUSH TABLES WITH READ LOCK简称(FTWRL),该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配)。由于FTWRL总共需要持有两把全局的MDL锁,并且还需要关闭所有表对象,因此这个命令的杀伤性很大,执行命令时容易导致库hang住。如果是主库,则业务无法正常访 阅读全文
posted @ 2015-06-27 08:50 天士梦 阅读(31616) 评论(2) 推荐(10) 编辑
摘要: 问题背景 有同事反馈在mysql上面执行一条普通的insert语句,结果报错, execute failed due to >>> Incorrect string value: '\xA1;offl...' for column 'biz_info' at row 1 经过半天的折腾,终于搞清楚了 阅读全文
posted @ 2015-06-26 09:38 天士梦 阅读(2703) 评论(9) 推荐(1) 编辑
摘要: 上一篇主要讲了线程池的原理和实现,感觉有点意犹未尽,这篇文章是对上篇文章的一个补充,主要围绕以下两点展开,one-connection-per-thread的实现方式以及线程池中epoll的使用。 one-connection-per-thread 根据scheduler_functions的模板, 阅读全文
posted @ 2015-06-17 10:34 天士梦 阅读(2734) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章说明了bug出现的原因和原理分析,要修复bug似乎已经水到渠成了,但远没有这么简单,只因为“并发”。要修复问题,首先要做的第一件事情是稳定的复现问题。由于数据库系统是一个并发系统,并且这个bug只有一定的概率出现,更说明了多个线程在一定的执行序列情况下才会出现这个bug。在没有用户请求的情 阅读全文
posted @ 2015-06-09 22:27 天士梦 阅读(1065) 评论(0) 推荐(0) 编辑
摘要: 概述: 在生产环境中,当开启insert buffer时(参数innodb_change_buffering=all),部分实例偶尔会出现“UNABLE TO PURGE A RECORD”错误。这个其实是一个老bug,从官方bug系统来看,也有其它用户遇到过类似的问题,并且官方在今年2月份已经对该 阅读全文
posted @ 2015-06-01 17:46 天士梦 阅读(1217) 评论(0) 推荐(0) 编辑