msyql遇到事务等待锁超时(error code:1205)的情况。了解下mysql锁的东西,文章是别人的。http://hedengcheng.com/?p=771顺便截个图...
 发布日期: 2016-09-19    分类: MySQL    浏览量: 3793  
算是对MySQL官方文档对JSON数据类型描述的一个笔记吧!官方介绍在这里:http://dev.mysql.com/doc/refman/5.7/en/json.html。从MySQL 5.7.8开始,MySQL新增了对JSON数据结构的原生支持。JSON数据类型相对于存储JSON格式的字符串的一些优势:1、JSON列会自动验证格式的正确性,错误的JSON会报错。2、优化的存储格式。存储的JSON文档会转换成一个内部的格式,以提供对文档元素的快速访问,当需要访问JSON的某个值得时候,不需要从一个文本里面去解析出这个值。这个二进制结构允许直接查找子对象或者通过key查找嵌套的值,或者是在不需要读取整个数组的情况下查找数组索引。JSON数据类型的最大存储大小是通过系统变量max_allowed_packet来限制的。JSON列不可以有默认值。JSON列不可以被索引。这个限制可以通过生成虚拟列的方法解决,链接:http://dev.mysql.com/doc/refman/5.7/en/create-table.html#create-table-secondary-indexes-vi...
 发布日期: 2016-08-02    分类: MySQL    浏览量: 5805  
原文地址:http://www.innomysql.net/article/21730.htmlInside君整理了一份最新基于MySQL 5.6和5.7的配置文件模板,基本上可以说覆盖90%的调优选项,用户只需根据自己的服务器配置稍作修改即可,如InnoDB缓冲池的大小、IO能力(innodb_buffer_pool_size,innodb_io_capacity)。特别注意,这份配置文件不用修改,可以直接运行在MySQL 5.6和5.7的版本下,这里使用了小小的技巧,具体可看配置文件。如果配置参数存在问题,也可以及时反馈Inside君,我们一起成长。触发Inside君做这件事情的原因是大部分网络上的MySQL配置文件都非常非常古老,大多都是基于MySQL 5.1的版本,这导致了绝大部分MySQL并没有运行在最优的环境,从而导致一些错误的使用,亦或是灾难性事故的发生,比如数据丢失,主从数据不一致等。而这些问题早在5.6版本及以后的版本中得到了解决。最后,抛弃你那所谓的、陈旧的、错误的MySQL配置文件,面向一个崭新的高性能、高可靠、高可扩展MySQL时代,你要做的就是下载这份配置文件...
 发布日期: 2015-12-24    分类: MySQL    浏览量: 3630  
mysql的utf8并不是完整的utf8,只能存储最多三个字节的字符,而完整的utf8编码是一个字符最多可以占用4个字节的。这就导致一些4个字节的字符不能存进utf8编码的表里面,比如emoji表情符号。mysql5.5.3版本的时候新增了一个新的字符集,叫做utf8mb4,这个就是真正的utf8编码的,也可以直接存储emoji表情符号。utf8mb4的字符范围是包含utf8的,所以,我们可以直接把当前数据库的编码转换成utf8mb4,不会有任何问题。为了避免以后因为字符范围而导致的问题,我们在新建数据库的时候也应该用utf8mb4代替utf8作为默认的字符编码。校验规则的话utf8mb4_general_ci和utf8mb4_unicode_ci都是可以得,mysql默认是前者,前者校验速度较快,后者则更准确一点。那么如何把当前数据库的编码由utf8转换为utf8mb4呢?我们需要下面几步:首先,我们先备份下原来的数据库,是吧?为了保险起见。然后呢!再核对下msyql的版本号,如果版本低于5.5.3的话就先升级一下吧!第三步,修改数据库,表和列,数量少的话可以直接执行sql语句:#修...
 发布日期: 2015-11-17    分类: MySQL    浏览量: 4655  
1、定位执行效率较低的sql语句通常有两种方法。一种是慢查询日志,用--log-slow-queries[=file_name]启动时,mysql会记录所有执行时间超过long_query_time秒的sql语句的日志文件。 long_query_time参数单位时秒,精度可以精确到微秒,默认情况下管理语句和不使用索引进行查询的语句是不会记录的,如果要记录这两类sql语句可以用--log-slow-admin-statements和log_queries_not_using_indexes来控制。还有一种方法就是使用show processlist命令查看当前mysql在进行的线程,包括线程的状态,是否锁表等,实时的查看sql的执行情况,同时对锁表操作进行优化。2、通过explain分析低效sql的执行计划 explain命令可以获取mysql的执行计划。执行如下命令:EXPLAIN SELECT * FROM `user` WHERE `uid`=1会显示:         id: 1   select_type: SIMPLE         table: user        ...
 发布日期: 2015-07-26    分类: MySQL    浏览量: 3612  
1、搜索的索引列,不一定是要选择的列。换句话说,最适合索引的列是出现在WHERE字句中的列,或连接字句中指定的列,而不是出现在SELECT关键字后选择列表中的列。2、使用唯一索引。考虑某列中值得分布,索引的列的基数越大,索引的效果越好。例如,存放出生日期的列具有不同的值,很容易区分各行。而用来记录性别的列,只有“M”和“F”,则对此列进行索引没有多大用处,因为不管搜游那个值,都会得出大约一半的行。3、使用短索引。如果对字符串列进行索引,应该指定一个前缀长度,只要有可能就应该这样做。4、利用最左前缀。在创建一个n列的索引时,实际是创建了MySQL可利用的n个索引,多列索引可起几个索引的作用,因为可利用索引中最左边的列集来匹配行,这样的列集成为最左前缀。5、不要过度索引。6、对于InnoDB存储引擎的表,记录默认会按照一定的顺序保存,如果有明确定义的主键,则按照主键顺序保存。如果没有主键,但是有唯一索引,那么就是按照唯一索引的顺序保存。如果既没有主键又没有索引,那么表中会自动生成一个内部列,按照这个列保存。按照主键或者内部列访问时最快的,所以InnoDB表尽量自己指定主键,当表中同时有几个...
 发布日期: 2015-04-07    分类: MySQL    浏览量: 3386  
MySQL常用存储引擎对比特点MyISAMInnoDBMEMORYMERGENDB存储限制有64TB有没有有事务安全支持锁机制表锁行锁表锁表锁行锁B树索引支持支持支持支持支持哈希索引支持支持全文索引支持集群索引支持数据缓存支持支持支持索引缓存支持支持支持支持支持数据可压缩支持空间使用低高N/A低低内存使用低高中等低高批量插入的速度高低高高高支持外键支持1、MyISAMMyISAM引擎不支持事务,也不支持外键,优势是访问速度快。对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以用这个引擎。还有个问题就是MyISAM类型的表比较容易损坏。可以用CHECK TABLE语句来检查表的健康状态,用REPAIR TABLE来修复。它还支持三种不同的存储格式:静态(固定长度)表(默认格式);动态表;压缩表。2、InnoDBInnoDB引擎提供了具有提交、回滚和崩溃恢复能力的事务安全特性。还有以下一些特点:自动增长列;外键约束;存储表和索引有两种方式:使用共享表空间存储和使用多表空间存储。3、MEMORYMEMORY存储引擎的数据是放在内存中的,所以访问速度非常快。表中的数据是...
 发布日期: 2015-02-07    分类: MySQL    浏览量: 3284  
1、字符串函数函数功能concat(s1,s2,...sn)连接s1,s2,...sn为一个字符串insert(str,x,y,insert)将字符串str从第x位置开始,y个字符长的子串替换为字符串insertlower(str)将字符串str中所有的字符变为小写upper(str)将字符串str中所有的字符变为大写left(str,x)返回字符串str最左边的x个字符right(str,x)返回字符串str最右边的x个字符lpad(str,n,pad)用字符串pad对str最左边进行填充,直到长度为n个字符长度rpad(str,n,pad)用字符串pad对str最右边进行填充,直到长度为n个字符长度rtrim(str)去掉字符串str右侧的空格repeat(str,x)返回str重复x次的结果replace(str,a,b)用字符串b替换字符串str中所有出现的字符串astrcmp(s1,s2)比较字符串s1和s2substring(str,x,y)返回从字符串str x位置起y个字符长度的字符串trim(str)去掉字符串str两端的空格ltrim(str)去掉字符串str左侧的...
 发布日期: 2015-01-18    分类: MySQL    浏览量: 3588