分类 "Sql-Mysql" 的存档.

SAE内网SAE Error: RESET Error;

由于微博API要求从2011年12月26日起,所有请求必须加入请求者的IP。由于从内网发起请求,最后header中获得的IP为10打头的内网IP,导致认证失败。
修改sae的SaeTClientV2类的http()方法中检测下,如果IP是10打头的内网IP,强制转换header中的saeremoteip为一个外网IP。

		$remote_addr = $_SERVER['REMOTE_ADDR'];
		if (substr($remote_addr,0,3) === '10.') {
			$remote_addr = '61.135.152.203';
			$headers[] = "SaeRemoteIP: " . $remote_addr;
		}

Read more…

mysql命令行,多行命令时如何取消/返回修改前边的命令

mysql命令行中执行多行命令时,如果前边输入的命令发生错误,是无法返回修改的,但是可以通过输入c来取消前边的输入,但是这时如果前边输入的东西很多,直接取消又很可惜的话,可以通过p来打印出前边的命令,复制下来去修改,然后输入c取消来重新输入命令。

mysql> select 8 from a
    -> where 1=1
    ->  and 1=0
    -> p
#输入p后,打印出了前边的命令。
--------------
select 8 from a
where 1=1
 and 1=0
--------------
#依然进入->状态,等待输入,输入c,取消当前输入。
    -> c
mysql>

Read more…

Memcache 命令行用法

1、启动Memcache 常用参数


memcached 1.4.3
-p       设置端口号(默认不设置为: 11211)
-U       UDP监听端口 (默认: 11211, 0 时关闭)  

-l   绑定地址 (默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d            独立进程运行
-u  绑定使用指定用于运行进程 
-m       允许最大内存用量,单位M (默认: 64 MB)
-P      将PID写入文件,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

如:
在linux下:./usr/local/bin/memcached -d -u jb-mc -l 192.168.1.197 -m 2048 -p 12121
在window下:d:App_Servmemcachedmemcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500
在windows下注册为服务后运行:
sc.exe create jb-Memcached binpath= “d:App_Servmemcachedmemcached.exe -d RunService -p 11211 -m 500″ start= auto
net start jb-Memcached
 
Read more…

mysql like 查询不区分大小写

mysql的like查询默认是不区分大小写的 如:

select * from table_name where a like 'a%'
select * from table_name where a like 'A%'

效果是一样的。
要让mysql的like查询区分大小写,可以这样:

select * from table_name where binary a like 'a%'
select * from table_name where binary a like 'A%'

也可以在建表时,加以标识binary,也可实现like查询时区分大小写:

create table table_name(
     a varchar(20) binary 
)

 
Read more…

关于MongoDB的全局锁

对MongoDB有所了解的人都知道,MongoDB有一个让人头疼的全局锁(读写锁,允许并发读,而写会阻塞所有的读写),要命的是这个锁不是表级的,不是库级的,而是整个Server级别的,这让人听起来是不是非常的蛋疼。

在2.0版本以前,这一问题一直没有得到解决,于是有人提出,在可预见某个update操作的记录可能在磁盘上时,为了减少写锁占用的时间,可以采用先读后写的方式,通过先读一次,将要操作的记录加载到内存中,再进行内存中的update,这样写锁就不包括将数据从磁盘加载到内存的时间了。

在可预见数据冷热的情况下,这种操作能够有一定的效果,但是很明显,这种变态的方法不应该是一个终极解决方案。

值得庆幸的是,在2.0版本中,MongoDB宣称有很大程度的并发性能提升,而这一提升的基础正是解决了这个全局锁的问题。

解决的方法并不是通过减少锁粒度来解决,虽然collection级别的锁机制也正在开发中。(SERVER-1240)

解决方法是通过对一些可能造成长时间锁占用的操作进行锁抑制。比如和我们上面的方法类似,在进行update操作时,如果发现需要更新的记录在磁盘上,那么这个锁就不会一直占用,而是等到将数据从磁盘加载到内存后再添加写锁进行update。

而同理,对于其它一些可能耗时比较长的操作也可以采用类似的方法,通过将长时间占用的全局锁拆分成多个细粒度的小锁来使需要获取锁来进行的操作能够交错的执行,从而避免一夫当关万夫莫开的情况,主要包括下面一些操作:

查询操作
批量更新操作
批量删除操作
批量insert写入操作

Read more…

一条SQL

今天上午在一个JAVA群里,有人问了一个关于sql的问题,他用的应该是oracle或者DB2之类的数据库,偶也不清楚,就变变数据类型,用mysql做例子吧。大概也就是这个意思,要把如下的一个形式的表数据,

mysql> select * from table_sql1;
+--------+---------+-------+
| myyear | mymonth | amout |
+--------+---------+-------+
|   1991 |       1 |   1.1 |
|   1991 |       2 |   1.2 |
|   1991 |       3 |   1.3 |
|   1991 |       4 |   1.4 |
|   1992 |       1 |   2.1 |
|   1992 |       2 |   2.2 |
|   1992 |       3 |   2.3 |
|   1992 |       4 |   2.4 |
+--------+---------+-------+

通过一条SQL,查询出需要的结果,需要的结果是这个样子:

+--------+------+------+------+------+
| myyear | m1   | m2   | m3   | m4   |
+--------+------+------+------+------+
|   1991 |  1.1 |  1.2 |  1.3 |  1.4 |
|   1992 |  2.1 |  2.2 |  2.3 |  2.4 |
+--------+------+------+------+------+

Read more…

php的IP转换成整型函数ip2long()出现负数

php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数。
例如:

<?php
$ip = '192.168.127.1';
$ip_n = ip2long($ip);
echo $ip_n;      //得到 -1062699263
?>

由于IP转换成的整型值太大超出了整型的范围,所以变成负数。需写成$ip_n = bindec(decbin(ip2long($ip)));这样便可得到无符号的整型数,如下所示:

<?php
$ip = '192.168.127.1';
$ip_n = bindec(decbin(ip2long($ip)));
echo $ip_n;      //得到 3232268033
?>

Read more…

千万级访问量架构

1、HTML 静态化

其实大家都知道,效率最高、消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单 的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无 法全部手动去挨个实现,于是出现了我们常见的信息发布系统 CMS,像我们常 访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统 来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面, 还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有 一套高效、可管理的 CMS 是必不可少的。除了门户和信息发布类型的网站,对 于交互性要求很高的社区类型网站来说, 尽可能的静态化也是提高性能的必要手 段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是 大量使用的策略,像 Mop 的大杂烩就是使用了这样的策略,网易社区等也是如 此。同时,html 静态化也是某些缓存策略使用的手段,对于系统中频繁使用数 据库查询但是内容更新很小的应用,可以考虑使用 html 静态化来实现,比如论 坛中论坛的公用设置信息, 这些信息目前的主流论坛都可以进行后台管理并且存 储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考 虑将这部分内容进行后台更新的时候进行静态化, 这样避免了大量的数据库访问 请求。

Read more…

PowerDesigner 设置的一些小技巧

1、PowerDesigner使用MySQL的auto_increment
◇问题描述:
PD怎样能使主键id使用MySQL的auto_increment呢?
◇解决方法:
打开tableproperties窗口→columns→选中id列→打开columnsproperties窗口→勾选identity即可
注意:概念模型没有此选项,物理模型才有

2、PowerDesigner去掉SQL脚本中的双引号
◇问题描述:
PD生成Oracle数据库建表SQL时,默认会给表名和字段名加上双引号,怎样能去掉SQL脚本中的双引号呢?
◇解决方法:
把Database→EditCurrentDBMS→General→Script→Sql→Format→CaseSensitivityUsingQuote设置为NO即可

Read more…

mysql – left join 唯一 用法介绍

有两个表如下结构:
test_join_a

+----+----------+------+
| id | username | flag |
+----+----------+------+
|  1 | a        |    1 |
|  2 | a        |    0 |
|  3 | b        |    1 |
|  4 | c        |    1 |
+----+----------+------+

test_join_b

+------+-----------+
| idb  | usernameb |
+------+-----------+
|   11 | a         |
|   12 | b         |
|   13 | b         |
+------+-----------+

Read more…