2012年2月2日

摘要: 一直以来积累了很多对MySQL优化的心得和经验,计划通过写日志的方式一步一步写出来分享给大家。MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情况下的瓶颈和问题都需要通过观察MySQL的运行情况来进行分析,《查看MySQL运行状况》这篇文章罗列了一些常用的查看MySQL运行信息的方式。而对于大多数的程序员来说,最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询,所以这里主要给大家介绍如何利用官方的mysqldumpslow工具方便的查看这些信息。如何打开MySQL的慢查询,请点击《打开MySQL的慢查询记录》。mysqldumpslow命令/path/mysqldu 阅读全文
posted @ 2012-02-02 11:10 BobbyPeng 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 当MySQL繁忙的时候运行show processlist,会发现有很多行输出,每行输出对应一个MySQL连接。怎么诊断发起连接的进程是哪个?它当前正在干嘛呢?首先,需要通过TCP Socket而不是Unix Socket连接MySQL,这样在show processlist的输出中就会有来源端口号。如下,mysql> show processlist;+——–+——–+—————–+——+———+——+——-+——————+| Id | User | Host | db | Command | Time | State | Info |+——–+——–+—————–+——+———+—— 阅读全文
posted @ 2012-02-02 10:48 BobbyPeng 阅读(276) 评论(0) 推荐(0) 编辑

2011年12月22日

摘要: 如何将CSDN的600万数据导入到MYSQL数据库?看到文本格式后,首先想到的是用文本来读取文件,还是一个比较大的文件, 然后就写了PHP程序一行一行的读, 但是发现速度特慢。再次看了看数据格式, 看有没有其它思路,突然发现数据格式跟之前备份数据的格式差不太多,只是分隔符不同,赶紧找了下LOAD DATA INFILE,发现确实可以实现,而且很快,下面是程序过程:PHP程序:(在PHP命令行下执行了三个小时才写入100多W数据)<?php $fp = fopen('www.csdn.net.sql', 'r'); mysql_connect('12 阅读全文
posted @ 2011-12-22 14:56 BobbyPeng 阅读(1102) 评论(0) 推荐(1) 编辑

2011年12月21日

摘要: JS具有阻塞特性,当浏览器在执行js代码时,不能同时做其它事情,即<script>每次出现都会让页面等待脚本的解析和执行(不论JS是内嵌的还是外链的),JS代码执行完成后,才继续渲染页面。由于,JS的这种阻塞特性,每次遇到<script>,页面都必须停下来等待脚本下载并执行,这会停止页面绘制,带来不好的用户体验。所以,有必要减少JS阻塞特性造成的困扰。1 优化脚本位置HTML4规范中,<script>可以放在<head>或<body>中。你可能习惯性的在<head>中放置多个外链JS、CSS,以求优先加载它们。浏览器在继续 阅读全文
posted @ 2011-12-21 15:10 BobbyPeng 阅读(1248) 评论(0) 推荐(0) 编辑
摘要: <?PHP /** * HTTP Protocol defined status codes * HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。 * @param int $num */ function https($num) { $http = array ( 100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 ... 阅读全文
posted @ 2011-12-21 11:44 BobbyPeng 阅读(758) 评论(0) 推荐(0) 编辑
摘要: <FilesMatch "\.(ico|gif|jpg|swf)">SetEnv IMAG 1</FilesMatch>CustomLog logs/access_log combined env=!IMAGApache日志,如果记录所有访问请求,文件会很大;如果使用日志分析软件,分析结果不一定准确。而且如果不安装cronolog工具来截断日志,会在一个整文件中,这样访问量一高,日志文件所占空间是可观的。通过在httpd.conf文件(虚拟主机可以直接在httpd-vhosts.conf文件中设置)进行这样的设置后,日志将不记录指定文件类型的请求:〈 阅读全文
posted @ 2011-12-21 10:25 BobbyPeng 阅读(1264) 评论(0) 推荐(0) 编辑

2011年12月20日

摘要: 影响用户访问的最大部分是前端的页面。网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等。而前端呢?其实应该是属于功能的表现。而我们建设网站的目的是什么呢?不就是为了让目标人群来访问吗?所以我们可以理解成前端才是真正和用户接触的。除了后台需要在性能上做优化外,其实前端的页面更需要在性能优化上下功夫,只有这样才能给我们的用户带来更好的用户体验。不仅仅如此,如果前端优化得好,他不仅可以为企业节约成本,他还能给用户带来更多的用户,因为增强的用户体验。说了这么多,那么我们应该如何对我们前端的页面进行性能优化呢?前端的页面主要包括xht 阅读全文
posted @ 2011-12-20 16:12 BobbyPeng 阅读(210) 评论(0) 推荐(0) 编辑
摘要: Yahoo! 的 Exceptional Performance 团队为 Web 页面性能优化带来最佳实践,旨在提高网站性能。Excetional Performance 团队总结出了一系列可以提高网站速度的方法,可以分为 7 大类 34 条。包括内容、服务器、Cookie、CSS、JavaScript、图片、移动应用等七部分。Web 页面性能优化之内容1、尽量减少 HTTP 请求次数终端用户响应的时间中,有 80% 用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、Flash 等。通过减少页面中的元素可以减少 HTTP 请求的次数。这是提高网页速度的关键步骤。减少页面组件的方法 阅读全文
posted @ 2011-12-20 16:04 BobbyPeng 阅读(256) 评论(0) 推荐(0) 编辑
摘要: Magent是一款开源的Memcached代理服务器软件,其项目网址为 http://code.google.com/p/memagent/,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务 器连接缓存服务器。Notes:¶current magent's speed is about 80% of memcached's. finding way to speed it up(not good)adding backup server does no harm to magent's performance. (good)ma 阅读全文
posted @ 2011-12-20 15:13 BobbyPeng 阅读(309) 评论(0) 推荐(0) 编辑

2011年12月15日

摘要: 通过MySQL存储过程、函数来批量插入记录mysql> use test;Database changedmysql> SET global log_bin_trust_function_creators = 1;Query OK, 0 rows affected (0.00 sec)mysql> DROP FUNCTION IF EXISTS randString;Query OK, 0 rows affected, 1 warning (0.00 sec)函数用来取得随机字符串mysql> delimiter $mysql> CREATE FUNCTION r 阅读全文
posted @ 2011-12-15 17:58 BobbyPeng 阅读(1742) 评论(0) 推荐(0) 编辑
摘要: 1. COUNT与LIMIT COUNT(*) 计算满足条件的记录行数,COUNT(col)计算满足条件的且col非空的记录行数 LIMTI n 在满足条件的记录中查询n条,发现n条后停止扫描 需要判断记录是否存在时可以用LIMIT取代COUNT,LIMIT 1 找到记录就会停止mysql> select count(id) from test where tkey='1pNEFf3mudsuVYVxK0AMZs9cqnpJkf5y' \G*************************** 1. row ***************************count 阅读全文
posted @ 2011-12-15 17:20 BobbyPeng 阅读(1437) 评论(0) 推荐(1) 编辑

2011年12月14日

摘要: 1. 存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。存储过程通常有以下优点:(1).存储过程增强了SQL语言的功 阅读全文
posted @ 2011-12-14 15:37 BobbyPeng 阅读(3108) 评论(0) 推荐(1) 编辑
摘要: 1. 为什么要备份数据库对数据库来说,最重要也最容易被忽视的就是备份。由于不可预测性,偶然的事件可能会导致非常惨重的损失。数据越是重要,数据的变化越频繁,备份越发需要经常进行。备份周期根据不同业务的需要可以调整,但是不能忽视备份。备份时最好也备份my.cnf或my.ini,这样可以保存你以前的配置参数。2. MyISAM表备份/恢复策略2.1. 文件热备份2.1.1. 拷贝文件因为MySQL表保存为文件方式,很容易备份。要想保持备份的一致性,对相关表执行LOCK TABLES操作,然后对表执行FLUSH TABLES。你只需要读锁定;这样当你复制数据库目录中的文件时,允许其它客户继续查询表。需 阅读全文
posted @ 2011-12-14 11:28 BobbyPeng 阅读(1436) 评论(0) 推荐(0) 编辑
摘要: 本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM和Innodb,文中设计的 MySQL 版本为 5.0.22。目前 MySQL 支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE或者SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb所有的表都保存在同一个数据文件ibdata1中(也可能是多个文件,或者是独立 阅读全文
posted @ 2011-12-14 11:17 BobbyPeng 阅读(296) 评论(0) 推荐(0) 编辑

2011年12月13日

摘要: 通过Mysql命令行登录后输入help命令即可看到如下消息:mysql> help;For information about MySQL products and services, visit: http://www.mysql.com/For developer information, including the MySQL Reference Manual, visit: http://dev.mysql.com/To buy MySQL Enterprise support, training, or other products, visit: https://shop.m 阅读全文
posted @ 2011-12-13 11:17 BobbyPeng 阅读(760) 评论(0) 推荐(0) 编辑

2011年12月12日

摘要: 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删 除操作后在数据文件中留下碎片所致。Discuz! 在系统数设置界面提供了数据表优化的功能,可以去除删除操作后留下的数据文件碎片,减小文件尺寸,加快未来的读写操作。您只要在做完批量删除,或定期(如 每一两个月)进行一次数据表优化操作即可。OPTIMIZE TABLE通过制作原来的表的一个临时副本来工作OPTIMIZE TABLE语法OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...如果您已经删除了表的一大部分,或者如果您已经对含有可 阅读全文
posted @ 2011-12-12 17:12 BobbyPeng 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 一,分区概念分区允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表。MySQL从5.1.3开始支持Partition。分区和手动分表对比手动分表分区多张数据表一张数据表重复数据的风险没有数据重复的风险写入多张表写入一张表没有统一的约束限制强制的约束限制MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用:Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域 阅读全文
posted @ 2011-12-12 10:49 BobbyPeng 阅读(135) 评论(0) 推荐(0) 编辑

2011年12月9日

摘要: 像Facebook、开心001、人人网、优酷、豆瓣、淘宝等高流量、高并发的网站,单点数据库很难支撑得住,WEB2.0类型的网站中使用MySQL的居多,要么用MySQL自带的MySQL NDB Cluster(MySQL5.0及以上版本支持MySQL NDB Cluster功能),或者用MySQL自带的分区功能(MySQL5.1及以上版本支持分区功能),我所知道的使用这两种方案的很少,一般使用主从复制,再加上MySQL Proxy实现负载均衡、读写分离等功能,在使用主从复制的基础上,再使用垂直切分及水平切分;或者不使用主从复制,完全使用垂直切分加上水平切分再加上类似Memcached的系统也可以 阅读全文
posted @ 2011-12-09 21:51 BobbyPeng 阅读(1030) 评论(1) 推荐(1) 编辑
摘要: Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。如下图所示:下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考。一、MySQL的安装与配置具体的安装过程,建议参考我的这一篇文章:http://heylinux.com/archives/993 阅读全文
posted @ 2011-12-09 21:42 BobbyPeng 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATETABLEmytable( IDINTNOTNULL, usernameVARCHAR(16)NOTNULL); 我们随机向里面插入了10000条记录,其中有一条:5555, admin。在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';时,如果在usernam 阅读全文
posted @ 2011-12-09 21:41 BobbyPeng 阅读(156) 评论(0) 推荐(0) 编辑

导航