`
fishermen
  • 浏览: 375143 次
社区版块
存档分类
最新评论

mysql 实战问题处理

 
阅读更多

记录工作中使用mysql的疑难杂症及解决。

 

1 pipe broken or connection broken

        使用pol的mysql client端的连接莫名断开,一般都是由server端主动断开连接引发,需要查一下连接池中的maxIdle与mysql的wait_timeout,前者一定要小,否则connection会被server主动断开。

 

2 域名下的slave机的负载均衡

目前免费的连接池如c3p0、dbcp的线程池使用方式都是lifo,如果你恰好用域名来管理多个ip下的mysql slave实例,你可能会发现各个slave的连接、负载很不均衡。

解决:1)小心调整idleTime、min/max poolsize;2)增加一层proxy,来代理对这些线程池的connection管理。不过这样需要知道每个connection的ip,driver没有,有一个办法通过sql来获取:select @@hostname 查到server的host,这样配合lookup server,ip也拿到手了;另外也可以直接根据host来管理,不用ip,就是不太直观;3)自己写一个driver,不过需要时间和验证的过程~~~

 

3 对于唯一键删除+insert的复合操作(unbind + bind)

常见于:业务绑定时,如果已经bind了另外一个唯一键,需要先unbind,然后再bind。这是replace into的一展身手的地方。

有几点要注意:1)如果有多个唯一键(包括primary key),如果新插入的row中与多个唯一键相同,mysql会先删除多条,然后插入这一条;2)replace into不能获取之前那行的原始值,比如replace into xxx on duplicate key update set a=a+1 相当于: set a=default(a)+1;3)table中必须要有unique key,否则相当于insert;

mysql的处理算法:1)try insert;2)if false,del with uniqu/primary key;3)try insert again

 

4 计数器更新减到负数

问题:mysql存计数器时,字段一般为unsigned,这样如果减到负数,mysql会抛异常,而且容易导致slave卡。

解决:使用insert into xx values (?,?,greatest(count+?, 0))on duplicate key update count=greatest(count+?, 0),这样就规避了上述问题。注意values中也要用greatest,否则mysql会有warnings,导致异常抛出:"Out of range value for column 'count' at row 1 ".

 

5 字符集为utf8的table,部分字段无法插入

问题:部分特殊字符无法插入。

解决:对于mysql 5.5之前的版本,varchar改为varbinary;对于mysql5.5之后的版本,继续用varchar,但client的连接字符集改为utf8mb4。这样不仅可以解决特殊字符无法入库的问题,也不会额外使用更多存储空间,同时与之前的utf8兼容,升级不用担心,不过对于java的mysql驱动,需要5.1.13之后的版本才支持utf8mb4。

 

6 关于update的返回值问题

        问题:对于sql "update timeline set vflag=10 where id=1",如果id为1的row的vflag已经是10了,那执行sql. update()后返回值(影响的行数)是1,而非预期的0.

        原因:确实找到id=1的row,并进行了修改,如果需要返回值是0,需要修改sql:"update timeline set vflag=10 where id=1 and vflag<>10"

分享到:
评论

相关推荐

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制...

    老男孩Mysql高级DBA 实战新浪首席DBA 老男孩教育杨海朝老师全程主讲 老男孩Mysql视频.txt

    │ 1301-MySQL日常问题处理总结_rec.mp4 │ 1302-如何成为一个好的MySQL DBA_rec.mp4 │ 1303-MySQL问题解答_rec.mp4 │ 1304-MySQL面试题专家解答1_rec.mp4 │ 1305-MySQL面试题专家解答2_rec.mp4 │ └─L014-...

    MySQL实战班视频.zip

    第2课、MySQL启动方式分析及启动故障分析-1206.wmv 第3课、MySQL日志-目录结构-重要命令-用户基本了解-1208.wmv 第4课、理解MySQL用户及Schema-1212.avi 第5课、数据类型-1214.avi 第6课、MySQL字符集-1219.avi 第7...

    高性能MySQL实战课

    为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一...

    Spark-Streaming+Kafka+mysql实战示例

    通过该示例,您将了解到如何使用Spark Streaming和Kafka处理实时数据流,以及如何将处理后的数据保存到MySQL数据库中。示例涵盖了从环境搭建到代码实现的全过程,帮助您快速上手实时数据处理的开发。提供了一个完整...

    MySQL DBA 数据库工程师实战经验

    5. **实战案例分析**:通过具体的案例分析,展示如何应用MySQL DBA的知识和技能解决实际问题。 6. **自动化与工具使用**:介绍自动化管理工具和技术,如监控系统、自动化部署、脚本编写等。 7. **高可用性与灾难...

    超级详细的MySQL数据库实战教程(包教包会)

    MySQL数据库实战教程通常会涵盖从基础到高级的多个方面,帮助用户全面掌握MySQL的使用和优化。以下是一个超级详细的MySQL数据库实战教程的大纲: ### 1. MySQL简介 - 了解MySQL的历史、特点和应用场景。 ### 2. ...

    深入探索MySQL主从架构与读写分离:提升数据安全和性能的实战指南

    本文从实战角度出发,深入探讨了MySQL主从架构及读写分离的搭建与应用。...总之,本文为开发者提供了一套完整的MySQL主从架构与读写分离的实战指南,旨在帮助他们有效地解决实际生产环境中的数据处理问题。

    基于node+express+mysql实战项目.zip

    网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工...

    PHP+MySQL动态网站开发

    理论部分包括PHP技术概述和基本语法、字符串和正则表达式、数组和函数、文件和目录操作、PHP的异常处理机制、XML文件操作、Session和Cookie会话管理、Smarty模板引擎、Ajax技术和MySQL数据库。实战部分包括在线投票...

    《海量数据处理与大数据技术实战》、《MySQL技术大全:开发、优化与运维实战》作者 旨在分享各种编程语言、开发技术、分布式与微服

    吃透MySQL系列 一招教你防止删库跑路!! 基于MVCC,我用C++自己手撸了个MySQL!! 糟了,生产环境MySQL主从数据库不一致怎么办?! 实际案例:MySQL主键性能压测!! MySQL8索引篇:性能提升了100%!! 卧槽,安装...

    MySQL数据库高性能处理开发实战指南70讲

    第1章课程介绍 第2章环境搭建 第3章一个SQL语句如何执行 第4章如何建表更符合业务 第5章怎么查询速度更快 第6章如何处理数据更新 第7章ORM框架原理 第8章怎么给数据上保险 第9章搭建"三高"架构的基础

    MySQL管理之道 性能调优、高可用与监控

    本书由资深MySQL专家撰写,以最新的MySQL版本为基础,以...不论你目前有没有遇到过此类问题,相信对你以后处理相关问题都会有所借鉴。本书适合所有希望构建和管理高性能、高可用性的MySQL数据库系统的开发者和DBA阅读。

    MySQL面试题(含答案)

    DBMS(数据库管理系统),由瑞典MySQLAB 公司开发,目前属于 Oracle 公司,MySQL是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的...

    shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) student.sql文件

    shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) student.sql,可以导入到数据库中做假数据,方便处理练习数据库操作

    PHP+MySQL动态网站开发.rar

    分别介绍了PHP 7的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与...

    MySQL自动停机的问题处理实战记录

    主要给大家介绍了关于MySQL自动停机的问题处理,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    基于struts+hibernate+spring+easyui+mysql的网上商城项目实战源码.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    Mysql性能优化教程

    优化实战范例 3 认识影响结果集 4 影响结果集的获取 4 影响结果集的解读 4 常见案例及优化思路 5 理解执行状态 7 常见关注重点 7 执行状态分析 8 分析流程 9 常见案例解析 11 总结 12 Mysql 运维优化 14 存储引擎...

Global site tag (gtag.js) - Google Analytics