Welcome 微信登录

首页 / 数据库 / MySQL

MySQL数据库优化推荐的编译安装参数小结

MySQL数据库优化推荐的编译安装参数小结

MySQL编译参数多而复杂,让新手感到很头大,如果是正式生成环境安装MySQL,没有充足的时间去研究每一个参数代表的意义,个人建议使用余洪春前辈整理的编译参数,便捷高效!MySQL的线上安装建议采取编译安装的方法,这样性能上有较大提升,,源码包的编译参数会默认以Debgu模式生成二进制代码,而Debug模式给MySQL带来的性能损失是比较大的,所以当我们编译准备安装的产品代码时,一定不要忘记使用“—without-debug”参数禁用Debug模式。而如果...
MySQL之Field‘***’doesn’t have a default value错误解决办法

MySQL之Field‘***’doesn’t have a default value错误解决办法

今天,中国博客联盟有博友反馈,zgboke.com无法提交博客,当时我正好准备去假日广场聚会,就匆匆忙忙的提交试了下,发现提交博客的时候确实报如下错误:提示web_pic不能为空值。很纳闷,之前都可以成功提交的,为什么突然不行了?看了下网上的案例,说是需要修改MySQL的配置什么的,但是目前博客联盟是挂在京东云擎的,数据库不能修改配置,按理说之前可以正常提交,后面应该也可以才对啊!由于聚会时间快到了,就先放在一边了。回到家之后,对比了下网上的类似案例,原来...
Mysql InnoDB删除数据后释放磁盘空间的方法

Mysql InnoDB删除数据后释放磁盘空间的方法

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。运行OPTIMIZE TABLE 表名后,虽然最后会报Table does not support optimize, doing rec...
在MySQL中使用通配符时应该注意的问题

在MySQL中使用通配符时应该注意的问题

现象:有一个表 action_conf,数据如下:如果想获取以exp_site_10_开头的en_name的记录,sql语句该如何写? so easy!select en_name from action_conf where en_name like "exp_site_10_%" 很自信的在idb中执行了这条sql,就会发现结果并不是所预期的。 你会发现,执行上面的sql会把所有以 exp_site_10开头的记录都列出来了。 原因: 其实,这都是sq...
几个常见的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...
<< 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 >>