例:获取account_name字段中‘_’的个数
select length(account_name) - length(REPLACE (account_name, '_', '')) from user
例:获取account_name字段中‘_’的个数
select length(account_name) - length(REPLACE (account_name, '_', '')) from user
1.Windows版本的下载地址为: memcached-1.2.6-win32-bin.zip
将压缩文件解压到 D:/PHP/Memcached/
2. 在CMD下输入 "D:/PHP/Memcached/memcached.exe -d install" 安装。
3. 再输入:"D:/PHP/Memcached/memcached.exe -d start"。
如果你没有修改过MySQL的配置,缺省情况下,wait_timeout 的初始值是28800。
wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题,通常来说,我觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本,其中两次SQL查询的间隔时间大于10秒的话,那么这个设置就有问题了(当然,这也不是不能解决的问题,你可以在程序里时不时 mysql_ping 一下,以便服务器知道你还活着,重新计算wait_timeout时间):
这篇文章很多地方只是翻译了my.cnf原始配置文件的说明
以下原文中有些参数事实上不适用于MySQL5.5,不知道原作者是否有经过实际测试,比如log-slow-queries应该写成slow-query-log,而log_long_format这个干脆就直接不支持了,回头我再重新整理一份靠谱点的参数说明吧
对于任何一个数据库管理系统来说,内存的分配使用绝对可以算的上是其核心之一了,所以很多希望更为深入了解某数据库管理系统的人,都会希望一窥究竟,我也不例外。
这里给出方案
按照下面的设置试试看:
key_buffer_size= 3840M
max_allowed_packet = 16M
table_cache = 1024
sort_buffer_size = 32M
read_buffer_size = 32M
read_rnd_buffer_size = 32M
myisam_sort_buffer_size = 256M
thread_cache_size = 32
query_cache_size = 256M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
其中key_buffer_size 上限是 4G,不能再多了。
程序中报错: MySQL server has gone away 是什么意思? 如何避免?
因此,感觉有必要总结一下发生这个问题的原因。今天正好看到一篇外文blog总结的比较好,就翻译过来了:
show processlist; 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。
方式1:进入mysql/bin目录下输入mysqladmin processlist;
方式2:启动mysql,输入show processlist;
如果有SUPER权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)。
可以使用explain来分析MySQL查询性能,举例如下:
1、使用explain语句去查看分析结果
如 explain select * from test1 where id=1;
会出现:
id selecttype table type possible_keys key key_len ref rows extra各列。
其中:
type=const表示通过索引一次就找到了;
key=primary的话,表示使用了主键;
type=all,表示为全表扫描;
key=null表示没用到索引。
type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。
对MySQL自身的优化主要是对其配置文件my.cnf中的各项参数进行优化调整。下面我们介绍一些对性能影响较大的参数。 由于my.cnf文件的优化设置是与服务器硬件配置息息相关的,因而我们指定一个假想的服务器硬件环境:CPU: 2颗Intel Xeon 2.4GHz 内存: 4GB DDR 硬盘: SCSI 73GB(很常见的2U服务器)。