• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
Twemproxy代理Redis数据分片方案实践

Twemproxy代理Redis数据分片方案实践

Twemproxy的介绍 Twitter的Twemproxy (https://github.com/twitter/twemproxy)是目前市面上用的最广的使用做多的用来做redis集群服务。由于redis是单线程,而且官方的cluster 还不是很稳定和广泛使用。Twemproxy是一种代理分片机制,Twemproxy作为代理,可接受来自多个程序的访问……

Redis持久化详解(RDB与AOF)

Redis持久化详解(RDB与AOF)

一、Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘。当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。 Redis提供了多种不同级别的持久化方式:一种是RDB,另一种是……

MySQL执行计划详解(EXPLAIN)

MySQL执行计划详解(EXPLAIN)

一、准备数据 为了更好地看看剖析执行计划,需要一个数据量不算小的数据库作为示例。 CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), key2 INT, key3 VARCHAR(100), k……

使用延迟关联对LIMIT语句进行分页性能优化

使用延迟关联对LIMIT语句进行分页性能优化

在SQL语句中,limit语句经常会使用到,在程序中分页都是使用limit语句来完成的。但是如果你只是粗暴地使用select * from table limit start,count;来完成分页操作,那么随着数据量的增大,一次分页操作将会成本将会不断增大。但是如果正确使用limit语句的话,将大大提高查询速度。下面来讲讲如何正确使用limit语句,测试表……

MySQL 5.7:JSON类型支持

MySQL 5.7:JSON类型支持

在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较。其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BLOB类型的方式来存储。这样导致的问题是查询性能不高,不能有效建立索引,与一些文档数据库对比,优势并不大,故在社区的反应证实比较一般。当然,MariaDB的dyn……

MySQL字符集与校验规则

MySQL字符集与校验规则

一、基础知识 字符和字符集(Character and Character set) 那什么是字符呢?在计算机领域,我们把诸如文字、标点符号、图形符号、数字等统称为字符,包括各国家文字、标点符号、图形符号、数字等。而由字符组成的集合则成为字符集,是一个系统支持的所有抽象字符的集合。字符集由于包含字符的多少与异同而形成了各种不同的字符集,字符集种类较多,每个字……

MySQL主从复制错误修复

MySQL主从复制错误修复

一、修复已中断数据复制的方法 在MySQL复制中,如果Slave节点上遇到错误,比如数据不存在或者主键冲突等错误时,想要忽略这些错误(你要明确清楚你忽略的数据造成主从不一致性,且你能够接受这个不一致性所带来的问题)。有一种情况需要注意,如果明确是主键冲突,应先采取主从数据对比,如果数据一致则忽略跳过这些错误,如果数据不一致则要先删除Slave上的数据,然后重……

MySQL 5.7:SYS库详解

MySQL 5.7:SYS库详解

一、sys schema的演进 MySQL的数据字典经历了几个阶段的演进: MySQL 4.1 – 提供了information_schema数据字典,一些基础元数据可以通过SQL来查询得到。 MySQL 5.5 – 提供了performance_schema性能引擎,可以通过参数performance_schema来开启/关闭,说实……

SQL语句之truncate和drop以及delete命令的区别

SQL语句之truncate和drop以及delete命令的区别

一、环境 创建一个表s_user(有主键且自增) create table s_user( u_id int auto_increment primary key, u_name varchar(15), u_pwd varchar(15), u_truename ……

MySQL线上CPU负载过高的解决过程

MySQL线上CPU负载过高的解决过程

接到报警通知,负载过高,达到800%,load也过高,有11了。 MySQL版本为5.6.12-log 1)top 之后,确实是mysqld进程占据了所有资源。 2)查看error日志,无任何异常。 3)show eninge innodb status\G,没有死锁信息。 4)show full processlist; 没有耗时非常大的慢sql再跑。看并……

SQL编程:基本查询

SQL编程:基本查询

一、实验环境 自行创建一个员工信息表info,里面记录着员工姓名,年龄,地址以及工资。 create database testdb charset utf8; use testdb; create table info(ID int not null auto_increment primary key,NAME CHAR……

SQL编程:表数据增删查改

SQL编程:表数据增删查改

创建info表 create table info( ID int not null auto_increment primary key, NAME CHAR(8) NOT NULL, AGE INT NOT NULL, ADDRESS VARCHAR(20) NOT NULL, SALARY d……