01 2013 档案

摘要:MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化。query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 R... 阅读全文
posted @ 2013-01-23 14:56 浮云的等待 阅读(198) 评论(0) 推荐(0) 编辑
摘要:前言在安装完MySQL之后,肯定是需要对MySQL的各种参数选项进行一些优化调整的。虽然MySQL系统的伸缩性很强,既可以在有很充足的硬件资源环境下高效的运行,也可以在极少资源环境下很好的运行,但不管怎样,尽可能充足的硬件资源对MySQL的性能提升总是有帮助的。在这一节我们主要分析一下MySQL的日志(主要是Binlog)对系统性能的影响,并根据日志的相关特性得出相应的优化思路。日志产生的性能影响由于日志的记录带来的直接性能损耗就是数据库系统中最为昂贵的IO资源。在之前介绍MySQL物理架构的章节中,我们已经了解到了MySQL的日志包括错误日志(ErrorLog),更新日志(UpdateLog 阅读全文
posted @ 2013-01-23 14:50 浮云的等待 阅读(279) 评论(0) 推荐(0) 编辑
摘要:优化Group By语句默认情况下,MySQL 排序所有GROUP BY col1,col2,....。查询的方法如同在查询中指定ORDER BY col1,col2,...。如果显式包括一个包含相同的列的ORDER BY子句,MySQL 可以毫不减速地对它进行优化,尽管仍然进行排序。如果查询包括GROUP BY 但你想要避免排序结果的消耗,你可以指定ORDER BY NULL禁止排序。优化Order by语句在某些情况中,MySQL 可以使用一个索引来满足ORDER BY 子句,而不需要额外的排序。where 条件和order by 使用相同的索引,并且order by 的顺序和索引顺序相同 阅读全文
posted @ 2013-01-23 14:42 浮云的等待 阅读(219) 评论(0) 推荐(0) 编辑
摘要:在本章第一节中我们还提到过通过 Query Profiler 来定位一条 Query 的性能瓶颈,这里我们再详细介绍一下 Profiling 的用途及使用方法。要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了,那就是通过 Query Profiler 功能。MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具,通过该工具可以获取一条Query 在整个执行过程中 阅读全文
posted @ 2013-01-23 14:37 浮云的等待 阅读(201) 评论(0) 推荐(0) 编辑
摘要:前言在 MySQL 中,线程独享内存主要用于各客户端连接线程存储各种操作的独享数据,如线程栈信息,分组排序操作,数据读写缓冲,结果集暂存等等,而且大多数可以通过相关参数来控制内存的使用量。线程栈信息使用内存(thread_stack)主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。排序使用内存(sort_buffer_size)MySQL 用此内存区域进行排序操作(filesort),完成客户端的排序请求。当我们设置的排序区缓存大小无法满足排序实际所需内存的时候,MySQL 会将数据写入磁 阅读全文
posted @ 2013-01-23 14:30 浮云的等待 阅读(218) 评论(0) 推荐(0) 编辑
摘要:逻辑模块组成总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQLLayer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,querycache的处理等等;第二层就是存储引擎层,我们通常叫做StorageEngineLayer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。所以,可以用如下一张最简单的架构示意图来表示MySQL的基本架构,如图所示:虽然从上图看起来MySQL架构非常的简单,就是简单的两部分而已,但实际上每一层中都含有各自的很多小模块,尤其是第一层SQLLayer,结构相当复杂的。下面我们就分别针对 阅读全文
posted @ 2013-01-23 14:27 浮云的等待 阅读(302) 评论(0) 推荐(0) 编辑
摘要:前言MySQLReplicaion本身是一个比较简单的架构,就是一台MySQL服务器(Slave)从另一台MySQL服务器(Master)进行日志的复制然后再解析日志并应用到自身。一个复制环境仅仅只需要两台运行有MySQLServer的主机即可,甚至更为简单的时候我们可以在同一台物理服务器主机上面启动两个mysqldinstance,一个作为Master而另一个作为Slave来完成复制环境的搭建。但是在实际应用环境中,我们可以根据实际的业务需求利用MySQLReplication的功能自己定制搭建出其他多种更利于ScaleOut的复制架构。如DualMaster架构,级联复制架构等。下面我们针 阅读全文
posted @ 2013-01-23 14:22 浮云的等待 阅读(242) 评论(0) 推荐(0) 编辑
摘要:(译者注:作者借这个题目反讽另一篇同名的文章)Jaslabs的Justin Silverton列出了十条有关优化MySQL查询的语句,我不得不对此发表言论,因为这个清单非常非常糟糕。另外一个Mike也同样意识到了。所以在这个博客中,我要做两件事情,第一,指出为什么这个清单很糟糕,第二,列出我的清单,希望我的比较好些。继续看吧,无畏的读者们!为什么那个清单很糟糕1.他的力气没使对地方我们要遵循的一个准则就是如果你要优化代码时,应该先找出瓶颈在哪。然而Silverton先生的力气没有用对地方。我认为60%的优化是基于清楚理解SQL和数据库基础的。你需要知道join和子查询的区别,列索引,以及如何将 阅读全文
posted @ 2013-01-23 14:19 浮云的等待 阅读(232) 评论(0) 推荐(0) 编辑
摘要:1)MySQL的replication过程是一个异步同步的过程,并非完全的主从同步,所以同步的过程中是有延迟的,如果做了读写分离的业务的话,建议也要监控此延迟时间;2)MySQL的master与slave机器记得server-id要保持不一致,如果一样的话,replication过程中会出现如下报错:Fatal error: The slave I/O thread stops because master and slavehave equal MySQL server ids; these ids must be different for replication to work(or t 阅读全文
posted @ 2013-01-23 14:16 浮云的等待 阅读(910) 评论(0) 推荐(0) 编辑
摘要:MySQL Workbench是 MySQL AB 最近释放的可视数据库设计工具。这个工具是设计 MySQL 数据库的专用工具。MySQL Workbench 拥有很多的功能和特性;这篇由Djoni Darmawikarta写的文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型,这里的订单系统可以是销售单也可以是订单,并且使用 forward-engineer(正向引擎)将我们的模型生成为一个 MySQL 数据库。MySQL Workbench是 MySQL 最近释放的可视数据库设计工具。这个工具是设计 MySQL 数据库的专用工具。你在 MySQL Workbenc 阅读全文
posted @ 2013-01-23 11:30 浮云的等待 阅读(461) 评论(0) 推荐(0) 编辑
摘要:此文章主要向大家介绍的是MySQL性能优化的参数,我前两天在相关网站看见MySQL性能优化的参数的资料,觉得挺好,就拿出来供大家分享。希望你掌握了这项技术,会在以后的学习或是工作中带来很大的帮助。 1)、back_log: 要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。 back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的... 阅读全文
posted @ 2013-01-23 11:00 浮云的等待 阅读(285) 评论(0) 推荐(0) 编辑
摘要:一、介绍========这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集群就无法继续正常工作了,这样也就失去了集群的意义了。出于这个原因,就需要有第三台服务器作为管理节点运行。另外,可能很多朋友都没有3台服务器的实际环境,可以考虑在VM 阅读全文
posted @ 2013-01-22 17:10 浮云的等待 阅读(315) 评论(0) 推荐(0) 编辑
摘要:3.2.8 集群启动脚本及启动服务注册从上面的启动过程我们可以看出,Mysql集群启动命令较复杂,容易造成cmd窗口因误操作关闭而导致的数据库停止,在此我介绍一下如何将这些命令的操作变成windos的服务项,当windos启动时,便可以自动启动mysql集群。首先,Mysql集群分为管理节点、数据节点、访问节点三种类型,每一种都可以注册为Windows服务,下面一一举例作为示范:3.2.8.1 NDB_MGMD集群管理节点对于NDB_MGMD节点,通常情况下,它的启动命令为:ndb_mgmd.exe –f config.ini,当我们想注册成服务项时,登录mysql集群管理节点所在服务器上,打 阅读全文
posted @ 2013-01-22 16:26 浮云的等待 阅读(1799) 评论(0) 推荐(0) 编辑
摘要:1软件的下载下载MySQL Cluster,地址:http://www.mysql.com/downloads/cluster/要Windows32位免安装版的,如图:<!--[endif]-->2机子的配置及作用准备3台电脑,机子的功能和配置见下表NodeIP AddressManagement (MGMD) node192.168.1.102MySQL server (SQL) node “A”192.168.1.103MySQL server (SQL) node “B”192.168.1.108Data (NDBD) node "A"192.168.1. 阅读全文
posted @ 2013-01-22 16:25 浮云的等待 阅读(752) 评论(0) 推荐(0) 编辑
摘要:步骤如下: 1、准备服务器 管理节点(MGM) 192.168.0.10(db1) SQL节点1(SQL1) 192.168.0.20(db2) SQL节点2(SQL2) 192.168.0.30(db3) 数据节点1(NDBD1) 192.168.0.40(db4) 数据节点2(NDBD2) 192.168.0.50(db5) 如果只想配置在两台服务器上可以将db1,db2,db4放在同一台服务器上,db3,db5放在同一服务器上。 2、下载mysql-cluster-gpl-7.0.8a-win32.msi,mysql的官方网站上就可以下载。分别安装在准备好的服务器上。 3、在db1中创建 阅读全文
posted @ 2013-01-22 15:43 浮云的等待 阅读(966) 评论(1) 推荐(0) 编辑
摘要:看网上很多人说mysql集群不是很稳定,因此这2天做了下mysql的集群,打算配置没有什么问题了,过2天做下相关的性能测试,我的配置环境如下:操作系统: Centos5.2软件包: mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz数据库管理节点: 192.168.100.151数据库数据节点: 192.168.100.65,192.168.100.58数据库sql节点: 192.168.100.65,192.168.100.58我这里数据节点和sql节点用相同的2台机器承担.1.管理节点的安装 #groupadd mysql #useradd 阅读全文
posted @ 2013-01-22 15:27 浮云的等待 阅读(267) 评论(0) 推荐(0) 编辑
摘要:mysql 有一项功能slow query log顾名思义,就是慢查询日志,日志中记录的是执行时间较长的query,也就是我们常说的slowquery,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录。两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name]2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项慢查询日志是文本格式,可以通过各种文本编辑器查看其中的内容。其中记录了语句 阅读全文
posted @ 2013-01-21 16:25 浮云的等待 阅读(3029) 评论(1) 推荐(0) 编辑
摘要:(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。MYSQL CPU 占用 100% 的解决过程 今天早上仔细检查了一下。目前此网站的七日平均日 IP 为2000,PageView 为 3万左右。网站A 用的 database 目前有39个表,记录数 60.1万条 阅读全文
posted @ 2013-01-21 15:14 浮云的等待 阅读(667) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示