最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考。 顾名思义,MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。
Browsing the archives for the mysql category
根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。而传统数据库保 证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大 的NoSQL运动,就是通过牺牲强一致性,采用BASE模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。 但是,对于CAP理论也有一些不同的声音,数据库大师Michael Stonebraker就撰文《Errors in Database Systems, Eventual Consistency, and the CAP Theorem》,表 示为了P而牺牲C是不可取的。事实上,数据库系统最大的优势就对一致性的保证,如果我们放弃了一致性,也许NoSQL比数据库更有优势。那么,有没有可能 实现一套分布式数据库集群,即保证可用性和一致性,又可以提供很好的扩展能力呢?回答是:有的。 目前,有很多分布式 数据库的产品,但是绝大部分是面向DSS类型的应用,因为相比较OLTP应用,DSS应用更容易做到分布式扩展。Michael Stonebraker提到了一种新型的数据库VoltDB,它的定义是Next-Generation SQL Database for Fast-Scaling OLTP Applications。虽然产品还没有问世,但是从技术资料上来看,它有几个特点:
启动、停止 MySQL 要启动 MySQL 的方法:(以本文将 MySQL 安装在 /usr/local/mysql 为例) # /usr/local/mysql/share/mysql.server start 注意在第一次执行前,须将 mysql.server 设成可执行(chmod 744 mysql.server),另外可将这行指令加在 /etc/rc.d/rc.local 档中,让 MySQL 在开机时自动启动。 要停止 MySQL 的方法: # /usr/local/mysql/bin/mysqladmin shutdown 如果你为 MySQL Administrator root 帐号(非作业系统的 root)设了密码,要停止 MySQL 则必须像下列这样做,MySQL 会询问你 root 的密码後才会执行 shutdown 的工作: # /usr/local/mysql/bin/mysqladmin -u root -p shutdown
MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问 mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册。 –auto-generate-sql, -a 自动生成测试表和数据 –auto-generate-sql-load-type=type 测试语句的类型。取值包括:read,key,write,update和mixed(默认)。 –number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1 –number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
mysqlslap是一个mysql官方提供的压力测试工具。以下是比较重要的参数: –-defaults-file,配置文件存放位置 –-concurrency,并发数 –-engines,引擎 –-iterations,迭代的实验次数 –-socket,socket文件位置 自动测试: -–auto-generate-sql,自动产生测试SQL –-auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。 –-number-of-queries,执行的SQL总数量 –-number-int-cols,表内int列的数量 –-number-char-cols,表内char列的数量
1、安装supersmack http://vegan.net/tony/supersmack/ 安装过程以及我中间遇到问题的总结都在这里。 之前记得把libmysqlclient.so.16拷贝到/usr/lib中 去,这样make 的时候不用改MakeFile文件。 [root@localhost super-smack-1.3]# cp /usr/local/mysql/libmysqlclient.so.16 /usr/lib 我遇到的问题如下: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory 看到北京野狼的这个帖子: http://bbs.chinaunix.net/archiver/?tid-638662.html
比方说在一些实际生产环境中,想改个MYSQL的配置,但是又不想停止服务重起MYSQL,有什么办法呢?使用SET命令可以做到,请看下面几个例子: 1.设置key_buffer_size的大小为10M。 SET GLOBAL key_buffer_size = 10485760; 或 SET @@global.key_buffer_size = 10485760; 2.设置最大连接数为200 SET GLOBAL max_connections=200; 或 SET @@global.max_connections=200;
连接mysql server出来这个信息 引用 message from server: “Host ‘HP-2B6E9EC1747B’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’” 连接次数失败过多,并超过max_connect_erros的值后,服务器会直接拒绝来源机器的所有连接,只要把mysql server默认 max_connect_errors = 10 把这个值设置大点就好了,记得一定要执行mysqladmin flush-hosts命令来解锁,原来的主机才可以恢复正常连接的.
原文出处:http://www.cnblogs.com/perfectdesign/archive/2009/12/05 /1617508.html 多版本并发控制 Multiversion Concurrency Control 大部分的MySQL的存储 引擎,比如InnoDB,Falcon,以及PBXT并不是简简单单的使用行锁机制。它们都使用了行锁结合一种提高并发的技术,被称为MVCC(多版本并发控制)。MVCC并不单单应用在MySQL中,其他的数据库如Oracle,PostgreSQL,以及其他数据库也使用这个技术。 MVCC避免了许多需要加锁的情形以及降低消耗。这取决于它实现的方式,它允许非阻塞读取,在写的操作的时候阻塞必要的记录。 MVCC保存了某一时刻数据的一个快照。意思就是无论事物运行了多久,它们都能看到一致的数据。也就是说在相同的时间下,不同的事物看相同表的数据是不同的。如果你从来没有这方面的经验,可能说这些有点令人困惑。但是在以后这个会很容易理解和熟悉的。
摘自:http://www.chenyajun.com/2009/01/02/1623 查询优化过程 查询优化器 一个查询通常有很多种不同的但是产生相同结果的执行方式,优化器要找到最好的。 MySQL使用基于代价的优化器,它意味着它尽力预计不同执行计划的代价并选择最不昂贵的,代价的单位是一个4k的数据页的次数。你可以通过查看 Last_query_cost看到优化器预计的代价: mysql> SELECT SQL_NO_CACHE COUNT(*) FROM sakila.film_actor; +———-+ | count(*) | +———-+ | 5462 | +———-+ mysql> SHOW STATUS LIKE ‘last_query_cost’; +—————–+————-+ | Variable_name | Value | +—————–+————-+ | Last_query_cost | 1040.599000 | +—————–+————-+ 这意味着它要随机读取1040个数据页。它基于统计而估计:每个表或者索引的page数量,索引中不同值的比例,行和key的长度,key的分布。 优化器估计时并不包括任何类型的cache所产生的效果——它假定每次读都是一个磁盘IO操作。