文章列表
 
您正在查看 "Mysql" 分类下的文章

2012年01月29日 星期日 11:21

 
2011年09月25日 星期日 2:05

mark it

在根据主键查询或者唯一性索引查询是出现:Extra: Impossible WHERE noticed after reading const tables

explain走到这个方式,会很慢,一个空表也是如此,在并发量高的情况下存在相互的等待,因为他要判断之。

如果直接走索引的方式,那么效率就非常高。

 

奇怪mysql要整这么个东西干啥

 

http://wangyuanzju.blog.163.com/blog/stat

 
2011年08月23日 星期二 4:09

参考文档: http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html

文档很详细,一些需要注意的地方:

lock table有两种模式  

lock tables table_name  read  [or write];

test1:

s

 
2011年08月21日 星期日 0:35

./mk-query-digest slow.log

--如此简单就可以分析mysql的慢日志,当然如果slow log很大时,这么做会消耗很大的性能。

主要参数:

--limit: default: 95%:20  Limit output to the given percentage or count.

--select: Compute aggregate statistics for these attributes.  (Query_time,Lock_time,Rows_sent,Rows_examin

 
2011年06月17日 星期五 12:09
一个innod的表,如果根据没有索引的列去更新,那么很悲剧,会lock整个表。

update tmp_xf set c 
 
2011年05月29日 星期日 22:08

mysql备库处理binlog日志是单线程的,无论主库有多少个database或者主库的tps有多高,备库当前的恢复模式都是单进程恢复。这样解决了并发的问题,但是也是备库很容易在主库高tsp的情况下,造成延迟。

一些情况下,备库的延迟可以通过预热来加快sql的执行速度。预热就是将需要更新的数据提取进行select,将数据缓存到内存,减少恢复进程执行时的IO消耗。 但当更新的数据很随机,数据量远远大于buffer pool大小时就不适用了。

数据库的tps上不去,负载过高,同时备库延迟,很多情况下是由于磁盘IO的压力导致的,如果重

 
2011年05月29日 星期日 20:18

 

之前写过关于mysql取随机数的记录,当时没有去分析表里数据量的分布情况,所以当执行计划不同时,实际的效果有非常大的差别。

dbaeyes 06:47:52>select count(

 
2011年05月29日 星期日 19:24

在取mysql主键最大最小值时,mysql会使用最优方式 SELECT tables optimized away

官方解释
 SELECT tables optimized away:当我们使用某些聚合函数来访问存在索引的某个字段时,MySQL Query Optimizer 会通过索引直接一次定位到所需的数据行完成整个查询。当然,前提是在 Query 中不能有 GROUP BY 操作。如使用MIN()或MAX()的时候

root@wap 06:57:32>explain select max(id) from tmp_xf;

+----+-------------+-------+------+---------------+------+---------+---

 
2011年04月14日 星期四 14:02

Mark

IGNORE is a MySQL extension to standard SQL. It controls how ALTER TABLE works if there are duplicates on unique keys in the new table or if warnings occur when strict mode is enabled. If IGNORE is not specified, the copy is aborted and rolled back if duplicate-key errors occur. If IGNORE is specified, only the first row is used of rows with duplicates on a unique k

 
2011年02月24日 星期四 21:36

简单mark

---

root@bbc 09:32:30>create table tmp_xf(i int(4) zerofill);

Query OK, 0 rows affected (0.01 sec)

 

root@bbc 09:32:42>insert into tmp_xf values(12);

Query OK, 1 row affected (0.00 sec)

 

root@bbc 09:32:49>select * from tmp_xf;

+------+

| i    |

+------+

| 0012 | 

+------+

1 row in set (0.00 sec)

###################

 

root@bb

 
2011年01月26日 星期三 18:47

简单记录--

select * into outfile '/home/mysql/tmp_xxxx.txt' from test_xf;

$cat tmp_xxx.txt

1       a       2011-01-26 17:23:25

2       a,b     \N

3       cc'"c   \N

 
2010年08月31日 星期二 10:31
mysql表或分表的数据达到一定量(也许是800w或者1000w..)这个时候非常需要再分表,简单的办法是直接写
--假设根据user_id分表,分成64张
insert into table_new_0000 select * from table_old where mod(user_id,64)=0;
insert into table_new_0001 select * from table_old where mod(user_id,64)=1;
...
一共64条sql,OK 搞定。  但是这个一张表被全表扫描了64次,做的无用功比较多,而且导致停机时间比较长。

虽然mysql的存储过程不是很熟,稍稍学习了下写了两个脚本,一个全量+一个增量脚本完
 
2010年08月09日 星期一 17:02

当一个表mysql的表成长到1000w以上,然后需要更加某些条件去删除其中的几百万数据的时候,如果直接delete将是一件极其痛苦的事情。 时间长是必然的,而且堵塞了正常应用的更新等操作,很有可能的导致数据库hang住和应用的崩溃

--常用的方法,如果表是1000w,符合删除条件的数据是400w的话,那时间一般会超过半个小时乃至更长
delete from xf_user_info where status=2 and date(gmt_create) < '2010-07-01';


----------使用类似于oracle常用的方式来完成,如果有更好的方法,不吝赐教

--
 
2010年06月10日 星期四 14:45
---

root@test 10:56:20>explain SELECT T0.*
->   FROM
-> PRODUCT_0000 T0,
-> PRODUCT_0003 T3
->  WHERE T0.ID = T3.id
->    AND T0.AUC_ID =5120001280;
+----+-------------+-------+--------+-------------------------+-----------------+---------+--------------------+------+-------------+
| id | select_type | table | type   | possible_keys           | key
 
2010年05月19日 星期三 14:47
小测一下 mysql的limit 的扫描行数 和order by和索引的关系


--查询条件字段都在索引里,数据都已经在数据库cache中
索引如下
KEY `IDX_USER_ID` USING BTREE (`user_id`,`do_date`,`SUS`,`r_type`,`rat`)

root@my_db 11:25:04>explain SELECT t2.* from
-> (select id
->    FROM my_test_table FF
->   WHERE user_id = 888
->     AND SUS = 0
->     AND r_type = 0
-> 
 
   
 
 
文章分类
 
   
 
文章存档
 
     
 
最新文章评论
  

关于spotlight,更多参考资料参考: http://www.innovatedigital.com/quest-spotlight
 

好文章。
 

好文~
 

mysql如果id递增的话,id越大越先被执行,但是执行顺序还是从上到下。
 

回复jenlin:手工测试的
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu