- 浏览: 152182 次
- 性别:
- 来自: 上海
-
最新评论
-
lixia0417:
不错,但是mysql中的range表示的意义好像有点笼统,比如 ...
MySQL的 select 和 sort 变量 -
snowolf:
行,研究的够有特色!!!emeditor我是天天用,还是你有深 ...
emeditor的monokai配色
文章列表
总是会忘记 status 中 Select% 的那几个变量的具体含义,这次干脆写下来以便日后查询。主要有这9个变量。 1. Select_scan 2. Select_range 3. Select_full_join 4. Select_range_check 5. Select_full_range_join 6. Sort_scan 7. Sort_range 8. Sort_merge_passes 9. Sort_rows其中 Select_scan 和 Select_range 包括了单表查询和多表联接查询中的第一个表。Select_full_join, Selec ...
- 2007-09-05 03:22
- 浏览 2171
- 评论(1)
mysqltoolkit是一组MySQL的命令行工具。包括11个小工具。MySQL Visual Explain提供sql的树状explain结果,看得比较清楚。不过我觉得对于我来说用处不大,MySQL自己的结果我已经看得很习惯了。可能对初学者比较友好吧。MySQL Query Profiler执行一系列sql,并显示status中的变化。分析sql的时候比较有用。MySQL Show Grants将权限信息导出成sql。MySQL Find根据行数,字段大小等很多条件找表,算是个有趣的工具吧。不过现在表最多也只有1000个左右,还有很多结构类似的,暂时还不需要用程序找。MySQL Duplic ...
- 2007-09-01 14:26
- 浏览 610
- 评论(0)
在MySQL的论坛上看到有人说“ Index slows down SELECT ... GROUP BY query”,追究下来才知道做group by有时不要索引更好。MySQL为此在5.0.40和5.1.17中追加了新的语法。5.0.40 ignore key for join (idxname)5.1.17 ignore key for join |order by | group by(idxname)如果没有指定for语句,则是所有的情况都忽略索引。而使用索引变慢的原因是,做统计的列不在索引中,所以需要通过索引读每一行,这样行数多的时候会产生很多的随机读,其速度还不如按顺序读整表之后 ...
- 2007-08-28 10:51
- 浏览 2435
- 评论(0)
看到文档上只说show statue like,一直以为只能用like,于是看两个变量名差得比较远的就很不方便了。今天看到有人说用where也可以,果然如此,为什么自己没有试一试呢。写法如下:show global status where variable_name like "com_%";
- 2007-08-20 00:31
- 浏览 808
- 评论(0)
DBI报错Data in column 5 has been truncated to 32700 bytes. A maximum of 37556 bytes are available at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI.pm line 1981原因是字段太长了被截断了,可以在db连接的参数中加入LongReadLen指定最大的长度。如:DBI->connect('xxx','root','',{LongReadLen => 8 * 1024 * 1024})
- 2007-07-31 06:52
- 浏览 588
- 评论(0)
mysql在建表的时候可以指定字符集和校对规则。校对规则有三种形式的结尾,_ci 代表了大小写不敏感,_cs是大小写敏感,_bin是二进制,也是大小写敏感的。默认的校对规则是大小写不敏感的,所以如何我们建了这样一张表:create table t (n varchar(10)) default charset=latin1;insert into t values('w'), ('W');然后查询select * from t where n = 'w';将会返回两条记录。如果我们需要大小写敏感的查询,可以临时改变其校对规则:select * from t where n collate lat ...
- 2007-06-13 02:50
- 浏览 620
- 评论(0)
mysql遇到内存不足的问题,但实际上内存并没有用完。所以做了一些调查,道听途说而已,可能结果并不是很准确。32位的linux只支持最大4G内存,而4G的内存一般情况下是分1G为系统空间,3G为用户空间,用户的程序只能在用户空间中分配内存,也可能用到系统空间,但不是自己分配的。因此一般单进程最大能分配3G内存。可以使用下面的程序测试一下:#include <stdio.h>#include <stdlib.h>int main(){ int MB = 0; while(malloc(1 << 20)) ++MB; printf("Allocat ...
- 2007-06-04 00:15
- 浏览 814
- 评论(0)
MONyog MySQL Monitor and Advisor:在本机装客户端监视mysql,基于网页的,安装完了会开一个本地的web服务。可以监视多个服务器,并且针对各种配置有一些优化的意见。网页主要基于js,似乎还可以自己修改。另外这里还提供一个mysql gui的工具。有企业版和免费版。用着跟mysql query browser差不多,不过感觉比qb好一点,主要是前一阵子用qb总是做了几个查询之后就使用内存太多爆掉了,之后一直在使用mysql的命令行,这个也算是一个gui的代替品吧。
- 2007-05-26 02:24
- 浏览 1539
- 评论(0)
写了一个hotsanic的mysql module。目前有5个项目:cache,connection,query/s,slow queries和innodb buffer pool。点这里下载。使用比较简单,下载后运行下面的命令,运行前更改命令中相关的部分,最好为mysql建一个专门的监视用户,如 grant usage on *.* to watcher@'127.0.0.1' identified by 'xxxxx'。cd /usr/local/HotSaNIC/modules/tar zxvf /tmp/module_mysql.tar.gzcd mysqlsed -i "/P ...
- 2007-05-16 05:08
- 浏览 649
- 评论(0)
InnoDB的buffer pool中可能有很多unflushed的数据,使得关闭MySQL很慢。如果需要加快关闭的速度,可以设置set global innodb_max_dirty_pages_pct=0然后通过show status看InnoDB_buffer_pool_pages_dirty。当它接近于0时再关MySQL。
- 2007-05-10 09:01
- 浏览 614
- 评论(0)
linux系统会用内存做很 多的buffer和cache,所以经常会看到内存用完了,其实这里面可能只有很少的一部分是程序用到的。当内存不足的时候,系统有两种选择,一是减少缓 存的量,另一种是把部分程序使用的内存换到swap中。如果是mysql使用的内存被转移到swap中了会对性能有很大的影响,所以应该尽量保持 mysql使用的部分在内存中不被转移出去。可以使用memlock启动mysql是mysqld保持在内存中,不过使用这个选项需要以 root运行服务器。还可以使用关闭swap,可以使用swapoff或者umount分区,不过当内存不够大的时候(比如只有1G)系统不太稳定,可能 会导致mysq ...
- 2007-05-08 04:55
- 浏览 822
- 评论(0)
备份备份分为完全备份和增量备份。完全备份有两种方式,一种是备份所有的数据库文件,适合比较大的数据库,另一种是将数据库全部dump出来,适合数据比较少的情况。对于第一种方法,各种引擎的方式差不多,步骤如下:1. flush tables with read lock 加读锁保持数据的一致性2. flush logs或者show master status记下二进制日志的位置方便增量备份3. 建立快照或者直接拷贝数据库文件4. unlock tables3中如果建立快照还需要下面两步:5. 拷贝数据库文件6. 删除快照对于MyISAM表还可以使用mysqlhotcopy,它也是直接拷贝表文件。由于脚 ...
- 2007-04-25 07:13
- 浏览 705
- 评论(0)
用mysql内置函数转换ip地址和数字 利用两个内置函数 inet_aton:将ip地址转换成数字型 inet_ntoa:将数字型转换成ip地址 充分利用mysql内置的format函数 尤其是在处理字符格式的时候,例如将12345转换成12,345这样的,只要用:format(12345,0)即可,如果用format(12345,2)则显示的是12,345.00了... 利用mysql的内置函数处理时间戳问题 eg : select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h ...
- 2007-04-20 05:49
- 浏览 547
- 评论(0)
LVM(逻辑卷管理器) 是一种把硬盘驱动器空间分配成逻辑卷的方法,这样硬盘就不必使用分区而被简易地重划大小。下图是LVM的主要结构。使用LVM可以快速的对一个逻辑卷做快照,所以可以为不能停机的数据库做快照。如果我们要对一个数据库系统做快照,数据库的数据文件必须在一个逻辑卷上,而 不能只使用传统的分区。虽然可以把一个物理分区转成LVM的卷,但这个操作需要先卸载分区,所以如果希望不关闭数据库,在安装数据库时就需要使用LVM。建立逻辑卷的步骤:1. 首先使用fdisk建立新的分区(假设为/dev/sda3),并使用t指令把分区类型改成8e。使用p指令可以看到system为Linux LVMDevice ...
- 2007-04-20 03:50
- 浏览 869
- 评论(0)
是否区分大小写和校对规则有关,默认设的规则是大小写不敏感的。show create table如果看到collate是ci结尾,那么就是不区别的,如果cs或bin结尾,就是区别的。如果建表的时候选择的是区别大小写的规则而查询的时候又暂时不想区别,可以用类似WHERE column_name COLLATE latin1_general_ci = 'xxx'的写法改变查询使用的校对规则
- 2007-04-15 12:27
- 浏览 815
- 评论(0)