Submitted by gouki on 2011, April 13, 10:24 PM
数据去重高效方法
去重的方法有很多,比如用什么Distinct、 Group By Having、临时表等
有兴趣的朋友可以把各种方法对比一下得出直观的效率概况
WITH TEST AS
(
SELECT ROW_NUMBER()
OVER(PARTITION BY Column1,Column2,Column3 ORDER BY ID )
AS NUM,* FROM TableName
)
DELETE FROM TEST
WHERE NUM != 1
百万数据量一分左右(当然也要看机器配置)
---------------------------------------------------------------------
mysql应该是不能执行的。。所以我是说这是纯摘抄而已
DataBase | 评论:0
| 阅读:16310
Submitted by gouki on 2010, December 28, 4:35 PM
如果数据库中没有什么太过重要的数据,每隔一段时间还是清除一下binlog吧。这玩意,对于没重要数据的人来说,实在没有意义 。。。。
大多数用binlog的,往往都是在wordpress上。因为它默认是innodb(好象3.01安装的时候,默认是myisam了。。至少我装的某一个库就是myisam的,很意外)
怎么清除bin log呢?先进入数据库命令行
show master logs;
purge master logs to 'mysql-bin.000010';
一般情况看看到最后一个是啥就留到啥吧。。。
留着最近的,真要出啥事了,还能恢复一下。。(不过,有多少人在自己的机器上恢复数据的?公司的除外。。。。)
Tags: innodb, mysql, binlog
DataBase | 评论:0
| 阅读:18102
Submitted by gouki on 2010, December 18, 10:56 PM
纯记录,原文来自:http://www.cnblogs.com/sunss/archive/2010/12/18/1909779.html
--start--
最近在优化mysql,其中很多人都在配置文件中添加了thread_concurrency,大多数人给出的描述是:
“设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。
thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8.”
具体修改方法是:
[mysqld]
thread_concurrency=8
殊不知,thread_concurrency是在特定场合下才能使用的,参考mysql手册 :
这个变量是针对Solaris系统的,如果设置这个变量的话,mysqld就会调用thr_setconcurrency()。这个函数使应用程序给同一时间运行的线程系统提供期望的线程数目。
--eof--
但是我没 有看到为什么 是针对Solaris的。。。所以,我就纯记录一下
DataBase | 评论:0
| 阅读:16385
Submitted by gouki on 2010, December 11, 3:00 PM
偶尔看到的。。。或许有人会注意过,但我以前真不知道
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);
这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实mysql就有这个方法
sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);
出来的顺序就是指定的顺序了。。。。这个,以前还真的从来没用过,偶尔看到,所以就记录了一下。一是做个笔记,二是希望可以给更多的人看到
DataBase | 评论:3
| 阅读:21313
Submitted by gouki on 2010, November 16, 8:44 AM
在虚拟机上装了一个mysql,然后在自己的机器上连接的时候出现这个错误: 'reading initial communication packet',找了一下资料发现原来默认的my.cnf中,对SERVER的IP进行了简单的绑定,只要去掉绑定即可
于是先whereis mysql,知道了mysql配置文件的位置在/etc/mysql下,然后
vim /etc/mysql/my.cnf
找到:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
将bind-address前加上注释即可,然后/etc/init.d/mysql restart ,OK一切都搞定了。
做个笔记
Tags: mysql, remote, bind
DataBase | 评论:0
| 阅读:19508