随笔分类 -  innodb

摘要:MySQL 5.6 即将发布, 5.6对优化器方面做了诸多优化。 我这次主要解释MRR(MULTI-RANGE-READ)。我用存储过程解释了这一过程的改变。大家细心体会去吧。我们针对语句:select log_time from person where nick_name = 'Lucy';表结构为:CREATE TABLE `person` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `nick_name` varchar(40) NOT NULL, `log_time` timestamp NOT NULL DEFA 阅读全文
posted @ 2012-08-24 10:49 MXi4oyu 阅读(362) 评论(0) 推荐(0)
摘要:最忌在做ORACLE到MYSQL得迁移,以下我写了三个简单的MYSQL里面米有的函数。 供大家参考。判断是否为时间?DELIMITER $$ USE `ytt`$$ DROP FUNCTION IF EXISTS `is_date`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `is_date`( f_in CHAR(19)) RETURNS TINYINT(4) BEGIN -- Created by david.yang 2012/8/9. IF UNIX_TIMESTAMP(f_in) = 0 THEN RETUR... 阅读全文
posted @ 2012-08-13 11:54 MXi4oyu 阅读(268) 评论(0) 推荐(0)
摘要:先来解释下什么是错误缓冲区?在MySQL里面, 错误缓冲区只记录最近一次出现的错误, 只要是有新的错误产生,旧的就会被覆盖掉。 所以想知道产生了什么错误,就得在每个有可能发生错误的语句后面紧跟着"show warnings" 或者 "show errors"。 最简单的方法是把输出的结果重定向到自己定义的日志文件里面,这样就可以方便后续查看。当然如果想随时查看这些错误,我们就得通过MySQL提供的API来实现。自从MySQL 5.6 这个革命性的版本出现后,问题得到了初步解决。虽然离我们想的还差好多。MySQL 5.6 提供了 get diagnosti 阅读全文
posted @ 2012-08-07 09:37 MXi4oyu 阅读(246) 评论(0) 推荐(0)
摘要:我们知道,MYSQL 5.1开始支持水平分区功能。 我们来尝试下如何在已经分区的表上面做查询优化。总体来说,优化的原则和对单独的表做优化是一样的,保证对磁盘上表的扫描次数减小。我们的表结构如下:这里已经插入2W多行数据进行测试。看看这条查询。SELECT * FROM t1 WHERE system_type IN (1,2)UNION ALLSELECT * FROM t1 WHERE system_type = 3;这条语句对system_type字段过滤了两次,然后进行了一次UNION ALL。 但是不知道,其实对两个分区一共进行了三次全表扫描。我们改成这样:SELECT * FROM 阅读全文
posted @ 2012-07-24 11:51 MXi4oyu 阅读(156) 评论(0) 推荐(0)
摘要:从5.5开始,INNODB 引擎也可以像MYISAM引擎一样来进行压缩了。 当然压缩后的表没事你也别INSERT 或者 UPDATE了。 DELETE 就无所谓了,只是MARK下,完了再批量删除。 这点和BRIGHTHOUSE 引擎倒是一致。当然了, 并不是所有的表都适合压缩,然后进行读取。 应用场景,数据的分布,以及硬件的资源都制约了是否要进行压缩。这个时候来说,最好的办法就是进行压力测试,看看是否适合你自己的业务。下面呢,就是压缩表对应的一些新的特性。1. 压缩表只针对单表空间有效,所以设置如下参数: innodb_file_per_table innodb_file_format = B 阅读全文
posted @ 2012-07-19 17:36 MXi4oyu 阅读(186) 评论(0) 推荐(0)