201507-04 MySQL中SELECT+UPDATE处理并发更新问题解决方案 这篇文章主要介绍了MySQL中SELECT+UPDATE处理并发更新问题解决方案分享,需要的朋友可以参考下。问题背景假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下:当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求:如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数续买后active_stat... 继续阅读 >
201505-31 比较全面的MySQL优化参考 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQLDBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了。1、硬件层相关优化1.1、CPU相关在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者避免经典的NUMA问题:1、选择PerformancePerWattOptimized(DAPC)模式,发挥CPU最大性能... 继续阅读 >
201505-05 MySQL索引原理及慢查询优化 MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题... 继续阅读 >
201504-10 MySQL入门书籍和方法分享 本文罗列了一些适用于MySQL及运维入门和进阶使用的书籍。背景:各大论坛上总是有很多同学咨询想学习数据库,或者是为入行DBA做些准备。几年来作为一个MySQLDBA的成长过程有一些积累和感悟,特此拿出来和大家分享。SQL入门在准备成为MySQLDBA之前,能熟练的编写SQL是一个必要条件。exists和join之间的等价转换;基本的行列转换;SQL循环等的熟练掌握对之后的运维和调优工作都有很大的帮助。推荐书... 继续阅读 >
201504-01 构建高并发高可用的电商平台架构实践(二)——架构剖析 CDNCDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。对于大规模电子商务平台一般需要建CDN做网络加速,大型平台如淘宝、京东都采用自建CDN,中小型的企业可以采用第三方CDN厂商合作,如蓝汛、网宿、快网等。当然在选择CDN厂商时,需要考... 继续阅读 >
201504-01 选择创业你的逻辑一致吗? 要能注意到未来在不断变化之中,所以才会不断校正路线,实现成功。越来越多的人都在创业,他们看到的可能是一个点子变成亿万富翁的戏剧性,或者一个成功者侃侃而谈的风光。但创业注定是孤独而艰辛的旅程。在成功之前,只有质疑,没有鲜花和掌声。那么什么时候是成功呢?就算是马化腾、马云和李彦宏,也不敢安然高卧。在你自以为成功的时候,依然随时可能失败,每个人都如履薄冰。那些风光的背后,是无时不刻的大脑高速运转。是一次... 继续阅读 >
201504-01 安装完 MySQL 后必须调整的 10 项配置 当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了!写在开始前…即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容:... 继续阅读 >
201503-31 mysql 使用set names 解决乱码问题的原理 解决乱码的方法,我们经常使用“set names utf8”,那么为什么加上这句代码就可以解决了呢?下面跟着我一起来深入set names utf8的内部执行原理先说MySQL的字符集问题。Windows下可通过修改my.ini内的PHP代码[mysql] default-character-set=utf8 //客户端的默认字符集[mysqld]default-character-set=utf8 //服务器端默认的字符集假设我们把两个都设为utf8,然... 继续阅读 >
201503-26 MySQL大量数据插入各种方法性能分析与比较 不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入。插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方法的选择。插入分析MySQL中插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例:连接:(3)发送查询给服务器:(2)分析查询:(2)插入记录:(1x记录大小)插入索引:(1x索引)关闭:(1)... 继续阅读 >
201503-26 提高数据库处理速度的利器——MySQL存储过程详解 存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特... 继续阅读 >
201503-23 mysql 索引技巧 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录... 继续阅读 >
201502-13 PHP扩展小试牛刀系列之数据库扩展mysqli详细使用教程 mysqli提供了面向对象和面向过程两种方式来与数据库交互,分别看一下这两种方式。1、面向对象在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下:__construct([string$host[,string$username[,string$passwd[,string$dbname[,int$port[,string$socket]]]]]])在上述语法中涉及到的参数说明如下。host:连接的服务器地址。username:连接数据库的用户名,默认值是服务器进程所有者的用户... 继续阅读 >
201502-02 PHP中文乱码分类及解决办法大全 PHP+MYSQL做网站开发通常都会碰到浏览器输出中文字符时乱码,这个问题的原因主要是因为HTML内容编码,PHP文件编码和MySQL数据库编码这三者不一致造成的。下面我们以UTF-8为例简述一下如何统一这三者之间的关系。新增一个PHP文件,命名为test_charset.php,将下面的代码保存到该文件中:<?php$charset="utf8";$con=mysql_connect("localhost","root","");mysql_query("SETcharacter_set_connection=$charset,... 继续阅读 >
201501-29 PHP开发环境下载、集成环境下载 PHP5.6.2稳定版本FORphp-5.6.2.tar.bz2FORphp-5.6.2.tar.gzFORphp-5.6.2.tar.xzPHPChina发布的PHP版本均为稳定版本,如需下载测试版本请登录php.net开发环境下载ApacheMySQLPHPApache官方网站Apache下载地址列表... 继续阅读 >
201501-27 Linux下查看Nginx、Apache、MySQL、PHP的编译参数命令 Nginx/usr/local/nginx/sbin/nginx-VApachecat/opt/httpd/build/config.niceMySQLcat/usr/local/mysql/bin/mysqlbug|grepconfigPHP/usr/local/php/bin/php-i|grepconfig 继续阅读 >
201501-23 101个MySQL调试和优化技巧 MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧。MySQL服务器硬件和操作系统调节:1.拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。2.不... 继续阅读 >