MySQL数据库性能优化之表结构优化

由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大,那么每次 IO 可访问的行数也就增多了。反过来说,处理相同行数的数据,需要访问的 page 就会减少,也就是 IO 操作次数降低,直接提升性能。此外,由于我们的内存是有限的,增加每个page中存放的数据行数,就等于增加每个内存块的缓存数据量,同时还会提升内存换中数据命中的几率,也就是缓存命中率。

  数据类型选择

数据库操作中最为耗时的操作就是 IO 处理,大部分数据库操作 90% 以上的时间都花在了 IO 读写上面。所以尽可能减少 IO 读写量,可以在很大程度上提高数据库操作的性能。 Continue reading

MYSQL查询优化:数据类型与效率

这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导:

在可以使用短数据列的时候就不要用长的。如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要。如果你在数据列中存储的最长的值有 40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40)。如果你能够用MEDIUMINT代替BIGINT,那么你的数据表就小一些 (磁盘I/O少一些),在计算过程中,值的处理速度也快一些。如果数据列被索引了,那么使用较短的值带来的性能提高更加显著。不仅索引可以提高查询速度, 而且短的索引值也比长的索引值处理起来要快一些。 Continue reading

MySQL索引背后的数据结构及算法原理

摘要

本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。

文章主要内容分为三个部分。

第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。 Continue reading

GoAgent图文设置教程:碉堡了,从此无限制上网。

相信有很多人都懂得使用GoAgent这个方法实现无障碍地访问国外的网站,如Facebook、Twitter、YouTube等。不少网友也曾经跟我探讨过这个免费的方法,现在笔者综合网上的资料对GoAgent进行一个详细的介绍。希望对大家有所帮助。

goagent banner

 

使用GoAgent浏览“某些网站”的具体步骤: Continue reading

百度地图API如何给自定义覆盖物添加事件

摘要:

给marker、lable、circle等Overlay添加事件很简单,直接addEventListener即可。那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~

一、定义构造函数并继承Overlay

  1. //定义自定义覆盖物的构造函数  
  2. functionSquareOverlay(center, length, color){  
  3. this._center = center;  
  4. this._length = length;  
  5. this._color = color;  
  6. }  
  7. //继承API的BMap.Overlay  
  8. SquareOverlay.prototype = newBMap.Overlay(); 

二、初始化自定义覆盖物

  1. //实现初始化方法  
  2. SquareOverlay.prototype.initialize = function(map){  
  3. //保存map对象实例  
  4. this._map = map;  
  5. //创建div元素,作为自定义覆盖物的容器  
  6. vardiv = document.createElement("div");  
  7. div.style.position = "absolute";  
  8. //可以根据参数设置元素外观  
  9. div.style.width = this._length + "px";  
  10. div.style.height = this._length + "px";  
  11. div.style.background = this._color;  
  12. //将div添加到覆盖物容器中  
  13. map.getPanes().markerPane.appendChild(div);  
  14.  //保存div实例  
  15. this._div = div;  
  16. //需要将div元素作为方法的返回值,当调用该覆盖物的show、  
  17. //hide方法,或者对覆盖物进行移除时,API都将操作此元素。  
  18. returndiv;  

三、绘制覆盖物 Continue reading

adodb cs5破解办法及注册码

 

用记事本编辑“C:\Windows\System32\Drivers\etc\”目录下的 hosts 文件

127.0.0.1 activate.adobe.com
127.0.0.1 practivate.adobe.com
127.0.0.1 ereg.adobe.com
127.0.0.1 activate.wip3.adobe.com
127.0.0.1 wip3.adobe.com
127.0.0.1 3dns-3.adobe.com
127.0.0.1 3dns-2.adobe.com
127.0.0.1 adobe-dns.adobe.com
127.0.0.1 adobe-dns-2.adobe.com
127.0.0.1 adobe-dns-3.adobe.com
127.0.0.1 ereg.wip3.adobe.com
127.0.0.1 activate-sea.adobe.com
127.0.0.1 wwis-dubc1-vip60.adobe.com
127.0.0.1 activate-sjc0.adobe.com

以防止其连接 Adobe 的激活验证服务器。

Adobe Photoshop CS5的序列号、注册码,永久激活,Adobe Photoshop CS5的序列号可以在安装软件时使用,软件安装好以后,使用Photoshop CS5序列号文件激活,软件就可以长期使用了。

1330-1359-9214-6960-6105-3005

1330-1166-7128-9017-6713-0682

1330-1822-4364-2774-7756-9908

1330-1218-5682-8007-1601-0801

1330-1048-9541-7428-9078-8528

1330-1617-1629-8083-2573-9190

可以让Adobe Photoshop CS5长期使用,没有任何功能限制,还可以在线升级更新软件的Photoshop CS5序列

数据类型和Json格式

1.

前几天,我才知道有一种简化的数据交换格式,叫做yaml

我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。

它说,从结构上看,所有的数据(data)最终都可以分解成三种类型

第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。

第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。

第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。

我恍然大悟,数据构成的最小单位原来如此简单!难怪在编程语言中,只要有了数组(array)和对象(object)就能够储存一切数据了。 Continue reading

在PHP语言中使用JSON

目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。

我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识。

从5.2版本开始,PHP原生提供json_encode()json_decode()函数,前者用于编码,后者用于解码。

一、json_encode()

该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:

  $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

结果为

  {"a":1,"b":2,"c":3,"d":4,"e":5}

再看一个对象转换的例子:

  $obj->body = 'another post';

$obj->id = 21;

$obj->approved = true;

$obj->favorite_count = 1;

$obj->status = NULL;

echo json_encode($obj);

结果为

  {
"body":"another post",

"id":21,

"approved":true,

"favorite_count":1,

"status":null
}

由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。 Continue reading

增加Apache2和Nginx的header长度限制

nginx默认的header长度上限是4k,如果超过了这个值
nginx会直接返回400错误

[error] 16613#0: *105 upstream sent too big header while reading response header from upstream

可以通过以下2个参数来调整header上限

client_header_buffer_size 16k;
large_client_header_buffers 4 16k;

看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取 Continue reading