Welcome 微信登录

首页 / 数据库 / MySQL

几个常见的MySQL的可优化点归纳总结

几个常见的MySQL的可优化点归纳总结

索引相关1. 查询(或更新,删除,可以转换为查询)没有用到索引这是最基础的步骤,需要对sql执行explain查看执行计划中是否用到了索引,需要重点关注type=ALL, key=NULL的字段。2. 在索引字段上施加函数to_char(gmt_created, ‘mmdd") = "0101′正确的写法gmt_created between to_date(“20090101″, “yyyymmdd”) and to_date(“20090102″, “...
MySQL中查询的有关英文字母大小写问题的分析

MySQL中查询的有关英文字母大小写问题的分析

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。1. 什么是字符集和校验规则?字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用SHOW COLLATION语句。校对规则一般有这些特征: 两个不同的字符集不能有相同的校对规则。 每个字符...
MySQL存储数据乱码的问题解析

MySQL存储数据乱码的问题解析

mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多开始出现了乱码。在这里,我分享下具体问题的排查过程,以及解决的办法。(1) 排除客户端设置导致的显示乱码如果用户设置的mysql character_set_client跟客户端显示的字符集不一致,很容易导致中文数据乱码。设置session字符集为utf8:set names utf8,设置客户端显示字符集为u...
介绍一个针对C++程序的MySQL访问库soci

介绍一个针对C++程序的MySQL访问库soci

一直以来,笔者都在不停寻找一种更人性化的数据库访问方式(并不是说默认的方式不好,而是有时候的确在模块化设计中不太方便)。后来有幸在php中找到codeigniter的ActiveReord,详细参考这篇文章: 抽离CodeIgniter的数据库访问类!然而c++却始终用着最原始的方式,昨天趁着项目要用的机会,在网上搜索了好久,总算让我找到两套c++的数据库访问框架:socilitesql两套代码我都拿下来看了一下,litesql实现了一套完整的代码自动生成...
在C#和MySQL中存取中文字符时避免乱码的方法

在C#和MySQL中存取中文字符时避免乱码的方法

当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码。由于中文字符采用双字节表示,所以对含有中文的字符串的处理一定要按UNICODE编码方式进行处理,也就是说,使用socket发送中文字串时要事先将字串转成UNICODE格式的。下面是简单的socket通信的代码。//服务端代码 try{IPAddress MyIP = IPAddress.Parse(“127.0.0...
详细解读MySQL中的权限

详细解读MySQL中的权限

一、前言 很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话。因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪些权限。 现在很多mysql用着root账户在操作,并不是大家不知道用root权限太大不安全,而是很多人并不知道该给予什么样的权限既安全又能保证正常运行。所以,本文更多的是考虑这种情况下,我们该如何简单的配置一个安全的mysql。注:本文测试环境为mysql-5.6.4二、Mysql权限介绍 mysql中...
几个缩减MySQL以节省磁盘空间的建议

几个缩减MySQL以节省磁盘空间的建议

我们在工作中时常会遇到一些客户的TPSQPS都不太高,但磁盘占用非常大,一旦单实例空间太大,像内存、网络、CPU以及备份都将增加相应的开销。可能仅仅是由于空间不满足使得我们不得不进行扩容,下面的方法提供给大家参考。有则改之无则加勉。1、表结构设计上1) 字符集是否遵循了最小化原则?(能用latin的就不用gbk。能用gbk的就不用utf8)2) 索引上是否有滥用?(根本不使用的字段建索引、不适合建索引的字段建索引、重复建索引或者不能很好的利用前缀索...
分析MySQL中索引引引发的CPU负载飙升的问题

分析MySQL中索引引引发的CPU负载飙升的问题

收到一个mysql服务器负载告警,上去一看,load average都飙到280多了,用top一看,CPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了。看下processlist以及slow query情况,发现有一个SQL经常出现,执行计划中的扫描记录数看着还可以,单次执行耗时为0.07s,还不算太大。乍一看,可能不是它引发的,但出现频率实在太高,而且执行计划看起来也不够完美:mysql> explain SE...
通过MySQL优化Discuz!的热帖翻页的技巧

通过MySQL优化Discuz!的热帖翻页的技巧

写在前面:discuz!作为首屈一指的社区系统,为广大站长提供了一站式网站解决方案,而且是开源的(虽然部分代码是加密的),它为这个垂直领域的行业发展作出了巨大贡献。尽管如此,discuz!系统源码中,还是或多或少有些坑。其中最著名的就是默认采用MyISAM引擎,以及基于MyISAM引擎的抢楼功能,session表采用memory引擎等,可以参考后面几篇历史文章。本次我们要说说discuz!在应对热们帖子翻页逻辑功能中的另一个问题。在我们的环境中,使用的是 ...
MySQL中一些优化straight_join技巧

MySQL中一些优化straight_join技巧

在oracle中可以指定的表连接的hint有很多:ordered hint 指示oracle按照from关键字后的表顺序来进行连接;leading hint 指示查询优化器使用指定的表作为连接的首表,即驱动表;use_nl hint指示查询优化器使用nested loops方式连接指定表和其他行源,并且将强制指定表作为inner表。在mysql中就有之对应的straight_join,由于mysql只支持nested loops的连接方式,所以这里的str...
浅谈MySQL中的子查询优化技巧

浅谈MySQL中的子查询优化技巧

mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会将子查询改写,通常情况下,我们希望由内到外,也就是先完成子查询的结果,然后在用子查询来驱动外查询的表,完成查询,但是恰恰相反,子查询不会先被执行;今天希望通过介绍一些实际的案例来加深对mysql子查询的理解:案例:用户反馈数据库响应较慢,许多业务动更新被卡住;登录到数据库中观察,发现...
MySQL索引优化的实际案例分析

MySQL索引优化的实际案例分析

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描;看起来非常的简单,但是我经常看到很多性能较差的sql没有利用这个优化规律,下面将结合一些实际的案例来分析说明:案例一:一条sql执行非常的慢,执行时间为:root@test 02:00:44 SELECT * FROM test_order_des...
MySQL在关联复杂情况下所能做出的一些优化

MySQL在关联复杂情况下所能做出的一些优化

昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点: 第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的; 第二.驱动表的选择至关重要,通过查看执行计划,可以看到优化器选择的驱动表,从执行计划中的rows可以大致反映出问题的所在; 第三.理清各表之间的关联关系,注意关联字段上是否有合适的索引; 第四.使用straight_join关键词来强制表之间的关联顺序,可以方便我们验证某些猜想;SQL:执行时间:mysql>...
对MySQL子查询的简单改写优化

对MySQL子查询的简单改写优化

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题:select i_id, sum(i_sell) as i_sellfrom table_datawhere i_id in (select i_id from table_data ...
<< 121 122 123 124 125 126 127 128 129 130 >>