表示 进入内容 126112701423
« 先前的 10 新的记录 | 下一步 10 较早的记录 »
Displaying posts with tag: database (reset)
[MySQL案例]之备份与Waiting for table flush

今天在处理慢查询平台的slow query时发现今天排在第一个的居然是一个简单的SQL,运行了4166次,最长耗时610秒,长期处于“Waiting for table flush”状态。

结果说在前面

排查一番后果然不出意外:一个慢查询堵塞数据库备份进程,备份进程堵塞了后续的查询SQL,最后导致后续的大面积SQL等待。

那么问题来了

  1. 一个慢查询是怎么堵塞mysqldump进程
  2. mysqldump是怎么堵塞后续的查询请求

首先我们来看下“Waiting for table flush”的解释

Waiting for table:
Waiting for tables, Waiting for table, Waiting for table flush
The thread got a notification that the underlying structure for a table has changed and it needs to reopen the table to get the new structure. However, to reopen the table, it must wait until all other threads have …

[获取更多]
在windows server2003下安装Redmine

原文:在windows server2003下安装Redmine   参考文献:Windows下使用_Ruby1.9.3安装RedMine2.2.3  参考资料:http://www.redmine.

【服务器】  【mysql】  【windows】  【http】  【配置】  【测试】  【Server】  【ruby】   …

[获取更多]
MySQL不能插入中文字符及中文字符乱码问题

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。在安装后MySQL之后,它的配置文件不是很给力,不知道你们的是不是,反正我的是! 开始插入中文字符的时候出现如下错误:ERROR 1366 (HY000): Incorrect string ...

【mysql】  【数据库】  【配置】  【字符集】  【database】   点击查看原文>

[MySQL SQL优化系列]之如何高效获取随机数据

起因

前几天有位同事问我MySQL要怎么返回一张表的几行随机数据。这个问题其实网上随便一搜答案一大把,但是效果都不太理想,当你要获取随机几行(不是1行)时,得到的数据不是全随机的,而是随机区域。那么有没有办法真正的返回全随机的数据呢?

分析

一般来说获取随机数据,我们第一时间想到的应该是rand()函数。最直接的是order by rand() limit n,这完全能够符合我们的需求,但是效率之地令人发指。我们来看看手册里面是怎么对这个函数描述的:

Returns a random floating-point value v in the range 0 <= v < 1.0.

You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.

RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers …

[获取更多]
[MySQL SQL优化系列]之如何高效获取随机数据

起因

前几天有位同事问我MySQL要怎么返回一张表的几行随机数据。这个问题其实网上随便一搜答案一大把,但是效果都不太理想,当你要获取随机几行(不是1行)时,得到的数据不是全随机的,而是随机区域。那么有没有办法真正的返回全随机的数据呢?

分析

一般来说获取随机数据,我们第一时间想到的应该是rand()函数。最直接的是order by rand() limit n,这完全能够符合我们的需求,但是效率之地令人发指。我们来看看手册里面是怎么对这个函数描述的:

Returns a random floating-point value v in the range 0 <= v < 1.0.

You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.

RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers …

[获取更多]
[MySQL SQL优化系列]之分页查询

记得在很久以前我在公司内部做过一次MySQL优化分享里面说到一个使用延迟关联实现排序分页类型SQL的优化,这个案例在《高性能MySQL》的第二版还是第三版也有提及。

延迟关联:通过覆盖索引返回所需数据行的主键,再通过主键获取所需数据。

这里我们来看一个使用延迟关联优化排序分页SQL的案例:

123456789101112131415
      mysql> select sql_no_cache * from t_user_log where appname = '发号中心' order by logintime limit 1000000,1;+---------+-----------+--------------------------+--------------+-----------------+------------------------------------+------------+-----------+-----------+| id      | uid       | username                 | appname      | loginip         | loginlocation                      | logintime  | logintype | useragent …
[获取更多]
[MySQL SQL优化系列]之分页查询

记得在很久以前我在公司内部做过一次MySQL优化分享里面说到一个使用延迟关联实现排序分页类型SQL的优化,这个案例在《高性能MySQL》的第二版还是第三版也有提及。

延迟关联:通过覆盖索引返回所需数据行的主键,再通过主键获取所需数据。

这里我们来看一个使用延迟关联优化排序分页SQL的案例:

123456789101112131415
      mysql> select sql_no_cache * from t_user_log where appname = '发号中心' order by logintime limit 1000000,1;+---------+-----------+--------------------------+--------------+-----------------+------------------------------------+------------+-----------+-----------+| id      | uid       | username                 | appname      | loginip         | loginlocation                      | logintime  | logintype | useragent …
[获取更多]
[20140928]创建连接到MySQL的连接服务器

首先要安装 mysql odbc 然后 odbc下创建DSN,并且要在系统DSN下。 最后执行

exec sp_addlinkedserver

 @server= 'XY',        --这是链接服务器的名称

 @srvproduct= 'mysql',    --这个...

【服务器】  【mysql】  【Server】  【Driver】  【odbc】  【database】   …

[获取更多]
Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio

严重: StandardWrapper.Throwableorg.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.

【java】  【mysql】  【SQL】  【日志】  【Apache】  【Framework】  【exception】  【JDBC】   …

[获取更多]
[MySQL SQL优化系列]之连接查询

MySQL的连接查询包括内连接(inner join)、外连接(left/right join,下文一律以left join代替)、交叉连接(在MySQL中等价于内连接,但是在标准SQL中是不等价的)、全连接(MySQL不支持full join,但是可以通过union构造),本文主要讲解一般我们在写SQL中最常用的:内连接以及外连接两种连接查询,通过一些案例来说明我们在使用关联查询中需要注意什么问题,要怎么做才能做到最优查询。

重点说在前面

  1. MySQL对表连接至今只支持nested loop join,而不支持hash join,这个是MySQL不建议执行复杂关联查询的根源(MariaDB已经实现hash join)

    通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。

[获取更多]
表示 进入内容 126112701423
« 先前的 10 新的记录 | 下一步 10 较早的记录 »