Chinaunix

标题: [已解决]MYSQL磁盘写入及update索引更新问题? [打印本页]

作者: ^-^    时间: 2008-08-29 11:38
标题: [已解决]MYSQL磁盘写入及update索引更新问题?
MYSQL磁盘写入及update索引更新问题?
如题,
我有一个用户表,
ID 为主键.
username建了索引.

mysql> show index from user;
+---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table         | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| user
|          0 | PRIMARY  |            1 | id          | A         |       16639 |     NULL | NULL   |      | BTREE      |         |
| user
|          1 | username |            1 | username    | A         |       16639 |     NULL | NULL   | YES  | BTREE      |         |
+---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+


晕的是,我想知道,我在用户表中更新(update)了某用户的password的该表的索引会不会更新?.
更新(update)了某用户的username的该表的索引会不会更新?.(这个应该会吧.)
还有,我delete 该表了几个用户,结果mysql并没有直接写该表的磁盘文件.user.MYD,user,myi,user,frm.我看了文件的修改日期,没有改变.
是不是有延迟写入磁盘文件啊.

知道的好心人帮忙看看.


[ 本帖最后由 ^-^ 于 2008-8-30 09:08 编辑 ]
作者: 枫影谁用了    时间: 2008-08-29 11:47
看你的类型。INNODB默认的话索引存储在表空间。当然你可以指定某个地方。
作者: ^-^    时间: 2008-08-29 11:49
不好意思,忘了说明,是myisam
作者: 枫影谁用了    时间: 2008-08-29 11:57
那你要更新了索引列才会更新索引啊。
作者: showsa    时间: 2008-08-29 12:08
索引是同步更新的

这也是为什么批量更新的时候先将索引禁用
导入之后再启用以提高速率的原因
作者: yueliangdao0608    时间: 2008-08-29 12:15
Your idear is right.
作者: ^-^    时间: 2008-08-29 12:31
呵呵,谢谢大家的热心回复.


原帖由 showsa 于 2008-8-29 12:08 发表
索引是同步更新的

这也是为什么批量更新的时候先将索引禁用
导入之后再启用以提高速率的原因


showsa的意思是只要有更新,不管该表中什么列更新,或有写入操作那么索引就会更新.是吗?

[ 本帖最后由 ^-^ 于 2008-8-29 12:36 编辑 ]
作者: wildlily980    时间: 2008-08-29 13:52
我想知道,我在用户表中更新(update)了某用户的password的该表的索引会不会更新?.
==================================
不会。
作者: ^-^    时间: 2008-08-29 13:59
明白,
谢谢wildlily980,呵呵.
作者: ruochen    时间: 2008-08-29 16:06
原帖由 ^-^ 于 2008-8-29 12:31 发表
呵呵,谢谢大家的热心回复.




showsa的意思是只要有更新,不管该表中什么列更新,或有写入操作那么索引就会更新.是吗?

myisam的应该是更新索引相关的列,索引才更新的
作者: ^-^    时间: 2008-08-30 09:07
ruochen

,3Q
作者: ruochen    时间: 2008-08-30 13:21
原帖由 ^-^ 于 2008-8-30 09:07 发表
ruochen

,3Q


我的数据库里面基本都是myisam的引擎
对innod还没怎么仔细看
作者: voxxu    时间: 2008-08-30 17:28
还有,我delete 该表了几个用户,结果mysql并没有直接写该表的磁盘文件.user.MYD,user,myi,user,frm.我看了文件的修改日期,没有改变.
是不是有延迟写入磁盘文件啊.
_______________________________________________
mysql不会实时写磁盘文件,是延时写入的。
作者: ruochen    时间: 2008-08-31 20:14
原帖由 voxxu 于 2008-8-30 17:28 发表
还有,我delete 该表了几个用户,结果mysql并没有直接写该表的磁盘文件.user.MYD,user,myi,user,frm.我看了文件的修改日期,没有改变.
是不是有延迟写入磁盘文件啊.
__________________________________________ ...



你有没有flush?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2