mysql小技巧积累(持续更新)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 一、关于NULL值 1.update null值时,格式为set col=null,不能是is null,不能是'null'。2.mysql中,Null值不等于'',oracle中,空字符串会被当成null保存。

一、关于NULL值

1.update null值时,格式为set col=null,不能是is null,不能是'null'。
2.mysql中,Null值不等于'',oracle中,空字符串会被当成null保存。
3.select时,mysql基于PADSPACE的校对规则,对CHAR和VARCHAR值进行比较都忽略尾部空格,需要精确匹配时可以用BINARY。
  例:select * from table where col=BINARY '';

、数据处理

1.去除重复数据:alter ignore table a add unique index(c1),给需要去重的列添加唯一索引
    IGNORE是MySQL相对于标准SQL的扩展,如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。并且,对错误值进行修正,使之尽量接近正确值。
  此命令不生效的话,需要使用旧的sql模式 http://guduwhuzhe.iteye.com/blog/1762593

三、关于DISTINCT 

1.对多列去重的话,例如select distinct col1,col2,只有col1且col2都有重复时才会排重,单独某一列重复是不会排重的。


四、误删ibdata文件
如果不小心删除了MySQL的ibdata文件,也无需惊慌。切记此时不要关闭MySQL实例,因为这时MySQL还保留着文件索引节点的链接。这时仍然可以使用mysqldump做个完全备份。

、遇到的
   在线上大批量insert数据时,mysql报警出现死锁,show processlist时发现大量的insert线程在排队等待。死锁内容如下:
------------------------
LATEST DETECTED DEADLOCK
------------------------
140826 10:32:57TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION 


*** TRANSACTION:
TRANSACTION 3BAA73EE, ACTIVE 0 sec setting auto-inc lock
mysql tables in use 1, locked 1
1 lock struct(s), heap size 376, 0 row lock(s)
MySQL thread id 1087546, OS thread handle 0x7fdec94d2700, query id 2497449384 10.71.65.57 tiger_mobile update
insert into xxx_table values (xxx)
*** WAITING FOR THIS LOCK TO BE GRANTED:
TABLE LOCK table `xxx_database`.`xxx_table` trx id 3BAA73EE lock mode AUTO-INC waiting

google了一下,等待的事务超过200个时,会判断为死锁,并且尝试回滚。因此在线上大批量insert时要注意锁表问题。

参考资料:http://www.cnblogs.com/zemliu/p/3502395.html

、关于sql_slave_skip_counte
使用的时候,它不仅跳过出错的事务,也会跳过正常的事务,所以使用的时候要十分小心,不要贪图方便而一次性跳过N个事务。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
网络协议 关系型数据库 MySQL
[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中
|
1月前
|
关系型数据库 MySQL C++
[mysql C++ 简单连接到深入] 持续更新中
[mysql C++ 简单连接到深入] 持续更新中
|
5月前
|
SQL 关系型数据库 MySQL
2023年MySQL实战核心技术场景面试篇-持续更新
2023年MySQL实战核心技术场景面试篇-持续更新
67 0
|
关系型数据库 MySQL 数据库
MySQL每日一题:177. 第N高的薪水(持续更新)
MySQL每日一题:177. 第N高的薪水(持续更新)
57 0
MySQL每日一题:177. 第N高的薪水(持续更新)
|
关系型数据库 MySQL 数据库
MySQL每日一题:176. 第二高的薪水(持续更新)
MySQL每日一题:176. 第二高的薪水(持续更新)
41 0
MySQL每日一题:176. 第二高的薪水(持续更新)
|
关系型数据库 MySQL 数据库
MySQL每日一题:175. 组合两个表(持续更新)
MySQL每日一题:175. 组合两个表(持续更新)
51 0
MySQL每日一题:175. 组合两个表(持续更新)
|
存储 关系型数据库 MySQL
mysql性能优化之数据类型(持续更新)
总结一下常用的数据类型创建的注意事项,后期会持续更新。
mysql性能优化之数据类型(持续更新)
|
关系型数据库 MySQL 数据库
【MySQL】常用命令合集-----持续更新~~
文章目录 前言 操作实例 MySQL常用命令 删除单个表的数据 修改基本表 更新数据库内容 修改编码
|
SQL 存储 缓存
MySQL调优指南(持续更新)
MySQL数据库优化通常有如下四个维度:硬件、系统配置、数据库表结构、SQL及索引。
|
SQL 存储 缓存
MySQL部分配置解析【持续更新】
一些mysql的配置参数解析,性能优化。
167 0