`
jedy
  • 浏览: 143731 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
文章列表
在使用字符集的时候有三个部分:1. 服务器上使用的字符集,是我们在表定义时使用 default charset 指定的字符集2. 连接使用的字符集,一般用 set names 指定3. 客户端使用的字符集,插入记录时记录的字符集如果不在乎汉字在数据库 ...
这里提供了一组MySQL的UDF函数,可以直接在SQL中操作memcached。安装比较简单,需要安装libmemcached-0.12.tar.gz,然后安装memcached_functions_mysql-0.1.tar.gz就可以了。它的帮助文件中提供了使用方法。只是需要设置LD_LIBRARY_PATH,重启MySQL后,在定义函数时才能找到对应的so文件。test@127.0.0.1>select memc_set(2,10009);+-------------------+| memc_set(2,10009) |+-------------------+| ...
通过了MySQL的DBA认证,还是挺容易的。今天证书终于寄到了,比较搞笑的是,居然还寄来了一个玩具十字镖。是建议DBA多多放松吗?
evernote是一个记笔记的软件,看了不少它的介绍,感觉还不错了,除了对中文的支持还不算完美。原价$49.95,但今天是免费的。http://www.giveawayoftheday.com/evernote/
$str = "TAKE CARE";if(-t STDOUT){ print "\e[1;31m$str\e[0m\n";} else { print "$str\n";}-t 是判断输出是不是tty,如果是的则输出颜色信息,如果不是,比如在STDOUT被重定向到文件时则不加颜色信息。
因为在url中使用中文有时候会很麻烦,今天就遇到了。所以会想把中文转成拼音,这样就不会出现问题了,就像很多blog的程序生成文章的链接时会只取标题中的英文。很久以前就看到过这样一个模块,就是想不起来名字了,在CPAN找到半天,终于还是找到了:Text::Unidecode。use utf8;use Text::Unidecode;print unidecode("你好");# That prints: Ni Hao虽然还有一些把汉字转成拼音的模块,也有比这个转得更好的,甚至还有声调,但这个强在日韩通吃(不过我没试过其他的到底支不支持日文和韩文)。
在“mastering perl”上看到一个有用的模块:Devel::Size。可以用来查看变量的大小,以后不用靠free来猜到底用了多少内存了。
...
目前使用XML::Parser解析XML文件的时候,它会把读入的字符设成utf8的(perl内部的utf8 flag设成on),可能导致之后的处理中出现乱码。可以把读出的字符用_utf8_off或encode转一遍去掉utf8 flag以解决乱码问题。
我们都知道在MySQL中批量insert的速度会比一条条insert快很多。类似的,update也应该是如此,但因为update的值往往因为条件的不同而不同,只能分开做。但是在下面的情况下,批量的update是可以做到的。1. 查询的条件中有主键或唯一键2. 查询的条件是等于,而不是范围。这实际上包含了1的情况在1的情况下,可以使用replace 或者 insert into ... values ... on duplicate key update ...两者都是在键重复的情况下自动的做更新,但需要注意的是,键不存在的时候会做insert操作。在2的情况下,可以建一张临时表,把要更新的值插入 ...
程序中一直用DBI的绑定,但是发现DBI做绑定的时候不管参数是数字还是字符都会当成字符,至少在MySQL中是如此。比如,age = ?,绑定20时,实际上的查询会是 age = '20'。因此MySQL在执行时需要做字符到数字的转换,对性能有一定的影响。如,select count(*) from user ignore key (age) where age = '45' 的查询时间为0.50秒,而select count(*) from user ignore key (age) where age = 45只需要0.41秒,其中user中有100万数据。查看了一下DBI的文档,没有看到什么 ...
在“Building Scalable Web Sites”这本书里看到一个概念:commit database。指用数据库记录版本控制系统的提交信息,以方便查询。对于SVN,有Kamikaze (http://kamikaze-qscm.tigris.org/),它是用脚本将commit信息记录到MySQL中。目前还没有觉得有多大的用处,先记下来。
按文档上说支持XA的事务提交分成两步,会有两次写操作。这个选项默认是开的,如果没有用到XA事务,则可以关闭以提高性能。因为只是和提交有关,所以如果事务都比较大,那么性能改善不明显,如果事务较小,或者使用了autocommit,那么从测试的结果看性能能提高10%左右。另外还有一个选项innodb_flush_method,改成O_DIRECT在centos4.4上看不到明显效果,不过文档说这是和系统相关的,所以如果是其他的系统也可以试一试,但有性能下降的可能。
做了一个对这两个参数的测试。表有100万行,每行100左右。select * from test_table order by a;改sort_buffer_size的效果比较明显,改成256k时需要2分10秒,而是32M的时候只需要24秒。read_rnd_buffer是在使用行指针排序之后,随机读用的。把max_length_for_sort_data改成64,使得排序时不会读入整行,只用行指针排序,排序的时间缩短为7秒。但这时表实际上已经在内存中了,read_rnd_buffer应该没有起到多大的作用,修改之后时间都差不多。如果表的内容不在内存里,从硬盘读,就需要100万次随机读,等了将近 ...
表test有三列(a,b,c),100万条记录。(a,b)上有唯一索引,现在要查找对于每一个a,b的值最大的那条记录。有好几种方法。1. select * from (select * from test order by d desc) as t group by a;速度最快的,但只有MySQL可以用。2. select t1.* from test t1 left join test t2 on t1.a = t2.a and t1.b < t2.b where t2.b is null; 因为用了联接,查询的行数比较多,所以比较慢。a的选择率越低,速度越慢。 3. select ...
Global site tag (gtag.js) - Google Analytics