在数据表里筛选出每一人的时间最新的一条记录

mysql取分组后最新的一条记录,下面两种方法.一种是先筛选 出最大和最新的时间,在连表查询.一种是先排序,然后在次分组查询(默认第一条),就是最新的一条数据了

方法一:【连表查询,推荐】
#select * from t_assistant_article as a, (select max(base_id) as base_id, max(create_time) as create_time from t_assistant_article as b group by base_id ) as b where a.base_id=b.base_id and a.create_time = b.create_time

方法二:(全表扫描,不推荐)
#select base_id,max(create_time), max(article_id) as article_id from t_assistant_article as b group by base_id
select * from (select * from t_assistant_article order by create_time desc) as a group by base_id

【摘自:http://bbs.csdn.net/topics/390867651】

数据量较大时的分段查询优化

数据表数据较多时,为了让内存够用,需要控制每次查出的数据数量。

通常情况下,我们可以用limit 结合 offset来分段查询。但当在查询过程中,有新数据产生时,offset偏移量会出现问题,导致分段查询不准。

建议方式,使用limit 结合 id 来分段查询。如,

 

mysql的半同步复制(Semi-synchronous Replication)

在Mysql5.5之前,Mysql的复制是异步复制,主库和从库的数据之间存在一定的延迟,这样存在一个隐患:当在主库上写入一个事物并提交成功,而从库尚未得到主库推送的Binlog日志时,主库宕机了,例如主库可能因为磁盘损坏、内存故障等造成主库上该事务Binlog丢失,此时从库就可能损失这个事务,从而造成主从不一致。

为了解决这个问题,Mysql5.5引入了半同步复制机制。在Mysql5.5之前的异步复制时,主库执行完Commit提交操作后,在主库写入Binlog日志后即可成功返回客户端,无需等待Binlog日志传送给从库,如下图, 继续阅读“mysql的半同步复制(Semi-synchronous Replication)”

MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能

要点:

1.将计数器在单独表中存储;

2.使用随机数缓解高并发时造成的锁表等待延时;

3.使用mysql的duplicate key 特性。 继续阅读“MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能”

mysql常用命令——导出、导入、创建

导出:

例如: mysqldump -p my_wp_database > /var/www/html/my_wp_database.sql

备注:执行以上命令时,不能处于登录mysql状态,即,使用ssh登录服务器后就可以执行以上备份数据库命令。

导入:

例如, mysql -p new_wp_database < /var/www/html/my_wp_database.sql

备注:执行以上命令时,要先用mysql命令登录mysql,同时要求新数据库已存在。

创建新数据库:

例如, create database new_wp_database;

备注:执行以上命令时,要先用mysql命令登录mysql。