文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>2010-07-19 帖子

2010-07-19 帖子

时间:2010-07-19  来源:有行动才会有收获


mysql的 undo log 放在共享表空间中,也就是 ibdata1 里面,这个文件还存放数据字典信息。
mysql的 redo log 放在 ib_logfile0、 ib_logfile1 里面,也就是普通的日志文件就是 redo log。
--------------------------------------------------
计算某一值连续出现的最大次数
[email protected] : test > select * from itpub1;  +------+------+ | id   | name | +------+------+ |    1 | 1    | |    2 | 1    | |    3 | 1    | |    4 | 1    | |    5 | 2    | |    6 | 2    | |    7 | 1    | |    8 | 1    | +------+------+ 8 rows in set (0.00 sec)
[email protected] : test > select aa.name,max(rownum) maxrow from ( select ib.id,ib.name,if((ib.name=@pname) ,  @row:=@row+1 , @row:=1) rownum , @pname:=ib.name pn from itpub1 ib, (select  @row:=0, @pname:='000000') row1 ) aa group by aa.name; +------+--------+ | name | maxrow | +------+--------+ | 1    |      4 | | 2    |      2 | +------+--------+ 2 rows in set (0.00 sec)
--------------------------------------------------
切换表: create table log_temp like logs; rename table logs to log_xxxx, log_temp to logs;
可以配合shell脚本,写入crontab中,每隔一段时间自动切换一次表
--------------------------------------------------
在创建表的时候使用 `c2` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  只有当真正有数据被改变时才会激活 ON UPDATE CURRENT_TIMESTAMP  也就是,如果新值等于旧值,MySQL是不会激活on update事件的,所以c2列也不会被更新  myisam和innodb都是如此 
root:[test]> desc a; +-------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type      | Null | Key | Default           | Extra                       | +-------+-----------+------+-----+-------------------+-----------------------------+ | c1    | int(11)   | YES  |     | NULL              |                             |  | c2    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |  +-------+-----------+------+-----+-------------------+-----------------------------+ 2 rows in set (0.00 sec)
root:[test]> insert a (c1) values (1),(2); Query OK, 2 rows affected (0.00 sec) Records: 2  Duplicates: 0  Warnings: 0
root:[test]> select * from a; +------+---------------------+ | c1   | c2                  | +------+---------------------+ |    1 | 2010-07-19 16:00:00 |  |    2 | 2010-07-19 16:00:00 |  +------+---------------------+ 2 rows in set (0.00 sec)
root:[test]> update a set c1=3 where c1=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1  Changed: 1  Warnings: 0
root:[test]> select * from a; +------+---------------------+ | c1   | c2                  | +------+---------------------+ |    3 | 2010-07-19 16:00:44 |  |    2 | 2010-07-19 16:00:00 |  +------+---------------------+ 2 rows in set (0.00 sec)
root:[test]> update a set c1=2 where c1=2; Query OK, 0 rows affected (0.00 sec) Rows matched: 1  Changed: 0  Warnings: 0
root:[test]> select * from a; +------+---------------------+ | c1   | c2                  | +------+---------------------+ |    3 | 2010-07-19 16:00:44 |  |    2 | 2010-07-19 16:00:00 |  +------+---------------------+ 2 rows in set (0.00 sec)
--------------------------------------------------

内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制。 1、内存表对所有用户的连接是可见的,这使得它非常适合做缓存。 2、内存表不允许使用TEXT和BLOB数据类型;只允许使用=和<=>操作符来搜索记录(不允许<、>、<=或>=);不支持auto_increment;只允许对非空数据列进行索引(not null)。 注:操作符 “<=>” 说明:NULL-safe equal,这个操作符和“=”操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。 3、如果内存表是以create table like方法创建的,则复制之后所有主键、索引、自增等格式将不复存在,需要重新添加主键和索引。 4、一旦服务器重启,所有内存表数据丢失,但是表结构仍然存在,因为内存表结构是存放在实际数据库路径下的,不会删除。 5、对于重启造成的无数据,可以在my.cnf文件中设置init-file="your_sql_file"选项,在sql文件中写入对内存表的数据初始化语句。 6、内存表在并发较高的情况下容易出现死锁,所以要谨慎使用。 7、关键参数 max_heap_table_size


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载