分类目录归档:database

慎用mysql的join语句和in子查询语句,普通查询可能是最好的优化。

服务器mysql集群,表引擎ndbcluster。

其中查3张表,原语句为:

select user.uid,user.uname,user.idcard_status,user_introduction.user_pic
from user left join user_introduction on user.uid = user_introduction.uid
where user.uid in(select uid from participate_class where cid = '11428' and paystatus = 1) ;

表数据总共9K+条左右的数据 ,所以说数据并不多,但是这个sql的执行时间让人惊讶: 35sec~36sec。其中in子查询拆分来查都很快,一旦组合起来就慢的要死。

Continue reading 慎用mysql的join语句和in子查询语句,普通查询可能是最好的优化。

mysql管理相关命令

mysql> show table status like ‘mytable’ \G;

*************************** 1. row ***************************

Name: mytable 表名

Engine: InnoDB 存储引擎伟InnoDB

Version: 10 mysql版本

Row_format: Compact 行格式。有Dynamic,fixed,Compact等格式。Dynamic是动态行,表字段里面宝航varchar,BloB等不定长字段。fixed是定长行。Compact是行压缩。

Rows: 0 表中的行数

Avg_row_length: 0 平均每行的字节数

Data_length: 16384 整个表的数据量(字节)

Max_data_length: 0 表最大的容量。0表示无限

Index_length: 0 索引数据占用磁盘空间的大小

Data_free: 10485760 表示已分配但还未被使用的空间大小。

Auto_increment: NULL 下一个AUto_increment的值

Create_time: 2011-08-06 22:39:46 创建时间

Update_time: NULL 更新时间

Check_time: NULL 使用check table等命令时的检查时间

Collation: utf8_general_ci 默认字符集和字符列排列顺序

Checksum: NULL 如果启动,则表示整个表的校验和

Create_options: max_rows=4294967295 avg_row_length=32 表创建时的选项

Comment:

1 row in set (0.00 sec)

iBatis org.apache.ibatis.transaction.TransactionException – Error configuring AutoCommit

最近发现用mybatis实现的登录功能,偶尔会爆出如下异常:

org.apache.ibatis.exceptions.PersistenceException: 
### Error opening session.  Cause: org.apache.ibatis.transaction.TransactionException: Error configuring AutoCommit.  
Your driver may not support getAutoCommit() or setAutoCommit(). Requested setting: false. 
Cause: com.mysql.jdbc.CommunicationsException: 
Communications link failure due to underlying exception... ...

多试几次以后,就又正常了,这个异常不是一直存在。不得其解,google 之,得到一种解决方案,不过他遇到的情况发生在mysql重启之时。

源地址: http://burtsev.net/en/2012/01/12/100

解决此问题,需要在mybatis(iBatis)的配置文件中加入两个属性:poolPingQuery 和 poolPingEnabled。具体如下:

Continue reading iBatis org.apache.ibatis.transaction.TransactionException – Error configuring AutoCommit

ubuntu mongodb安装及备份与恢复

使用命令

apt-key adv –keyserver keyserver.ubuntu.com –recv 7F0CEB10

然后编辑源:

vi /etc/apt/sources.list

增加一行:

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

然后更新并安装:

apt-get update

apt-get install mongodb-10gen

这样安装下来就是最新稳定版本。

导出数据库:

mongodump -h localhost –db database_name -o /home/backup

注意-o参数是目录,然后恢复数据:

mongorestore -h localhost –db database_name –directoryperdb /home/backup

由于导出后的数据库是多个.bson文件 ,可以打包方便保存或传输:

tar -zcvf  ./dump-name.tar.gz  /home/backup