Archive for 07月, 2009
无耻的澳大利亚华人莫来中国
让人生气的是一个华人,说着一口熟练的中国话,不是很生疏但是一听就知道是中国人说的英语,其言语就觉得中国人、外国人鄙视了。此人乃是一个澳大利亚华侨,北大毕业,移民澳大利亚,分别在澳大利亚和中国成立了两家公司,其人言必称“我们欧洲、美国、英国,你们中国”,妈的,我都想尿他一嘴,才离开中国几年就不想到中国人了,你他妈的啥时候成欧洲人、美国人、英国人了。
mysql数据库的优化(9)
二十五、MySQL应避免的事情
用删掉的行更新或插入表,结合要耗时长的SELECT。
在能放在WHERE子句中的列上用HAVING。
不使用键码或键码不够唯一而进行JOIN。
在不同列类型的列上JOIN。
在不使用=匹配整个键码时使用HEAP表。
在MySQL监控程序中忘记在UPDATE或DELETE中使用一条WHERE子句。如果想这样做,使用mysql客户程序的–i-am-a-dummy选项。
二十六、MySQL各种锁定
内部表锁定
LOCK TABLES(所有表类型适用)
GET LOCK()/RELEASE LOCK()
页面锁定(对BDB表)
ALTER TABLE也在BDB表上进行表锁定
LOCK TABLES允许一个表有多个读者和一个写者。
一般WHERE锁定具有比READ锁定高的优先级以避免让写入方干等。对于不重要的写入方,可以使用LOW_PRIORITY关键字让锁定处理器优选读取方。
UPDATE LOW_PRIORITY SET value=10 WHERE id=10;
二十七、给MySQL更多信息以更好地解决问题的技巧 注意你总能去掉(加注释)MySQL功能以使查询可移植:
SELECT /*! SQL_BUFFER_RESULTS */ …
SELECT SQL_BUFFER_RESULTS …
将强制MySQL生成一个临时结果集。只要所有临时结果集生成后,所有表上的锁定均被释放。这能在遇到表锁定问题时或要花很长时间将结果传给客户端时有所帮助。
SELECT SQL_SMALL_RESULT … GROUP BY …
告诉优化器结果集将只包含很少的行。
SELECT SQL_BIG_RESULT … GROUP BY …
告诉优化器结果集将包含很多行。
SELECT STRAIGHT_JOIN …
强制优化器以出现在FROM子句中的次序联结表。
SELECT … FROM table_name [USE INDEX (index_list) | IGNORE INDEX (index_list)] table_name2
强制MySQL使用/忽略列出的索引。
mysql数据库的优化(8)
二十二、学会使用SHOW PROCESSLIST
使用SHOW processlist来发现正在做什么:
+—-+——-+———–+—-+———+——+————–+————————————-+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——-+———–+—-+———+——+————–+————————————-+
| 6 | monty | localhost | bp | Query | 15 | Sending data | select * from station,station as s1 |
| 8 | monty | localhost | | Query | 0 | | show processlist [...]
