MySQL

PHP与MySQL

<span style="color:#000000;"><span style="font-size:16px;"><strong>说在最前面</strong></span></span>

    PHP与MySQL的搭配一直被认为是天生一对,抛开PHP的流行程度,MySQL同样也是世界上最流行的数据库引擎之一,加上之一是因为总得谦虚一点。好,废话也说不出来了,大家都知道,PHP和MySQL的关系也就停留在连接+增删改查+关闭连接就END了,还有什么好说的呢?其实也就是这么回事,和以前接触学过的东西其实没什么两样,大的概念上讲的确就是这么几步,但是我之所以要写一篇这样的文章是因为自从工作后,会发现实际公司做的东西会越来越细致,比如三年前我用php连接MySQL只会mysql_connect(),但是我不知道使用mysql_connect()是一种php与MySQL短连接的方式,而现在我知道竟然有短连接、长连接、持久连接和连接池。另外,三年过去了,mysql_connect()已经在PHP7中被干掉了,如果还使用mysql_connect()是不是会被人笑掉大牙啊,所以就打算为自己整理一个这样的文章吧,希望也能够帮到需要的朋友。

mysql扩展已经被干掉啦

mysql extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used

是的,就是这么回事。

MySQLI和PDO我该选择哪一种?

PDO vs. MySQLi 选择哪一个?(PDO vs. MySQLi: Which Should

使用pt-query-digest分析mysql

讲在前面
最近在看《高性能MySQL》,作者们背靠Percona向我展示了以前从不知道的一些关于MySQL的知识以及各种分析优化工具,比如这里要说的pt-query-digest。

什么是pt-query-digest?
pt-query-digest是一个可以分析MySQL日志(query、slow和binglog)、processlist和tcpdump的工具。

安装篇
pt-query-disest是用Perl写的一个文件,下载下来就可以使用。将下载下来的pt-query-digest文件放在环境变量目录下,方便使用。

wget percona.com/get/pt-query-digest
chmod u+x pt-query-digest

准备篇
执行命令 pt-query-digest ,发现如下错误信息,原因在于我们的系统缺少一个Perl包导致的。

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/bin/pt-query-digest line 3187.
BEGIN failed--compilation aborted at /usr/local/bin/pt-query-digest line 3187.

给开发人员的SQL Database调优方案

背景

作为一个Web开发者,我们经常会和数据库打交道,比如MySQL等,写出正常的SQL语句实现功能很容易,然而随着公司规模的扩大已经数据量的暴增,对数据表做一个最优的设计是大势所趋也是起好头将会影响接下来几年甚至几十年,所以设计出一个优秀的表对于开发人员是很重要的。 然而,开发人员的整体水平是有限的,而且作为Web开发人员,很难做到与专业的数据库管理员(DBA)对数据库的方方面面做到了如指掌。

多数公司的解决方案有

1.公司的DBA会对总体研发人员做定期的分享或培训。

2.在项目上线前由DBA对研发人员的主要表设计和SQL语句做一个review,以保证这样的SQL上线后是最优的,确保不会出现问题。

But,对于小公司而言,可能公司只会有一个DBA,版本迭代也会超快,So,完全由DBA来控制这件事已经变得难上加难。所以,最根本的解决方案是:提高研发人员对SQL语句的调优和数据表设计的本领,所以就有了本文。

本文的目的

1.提供给研发人员一些SQL和数据库本身调优的技术

2.让研发人员与DBA能更加有效的沟通

PHP&MySQL与UTF8终极处理方案

作为开发人员,我们有时会遇到编码问题,这里的编码并不是coding,而是语言编码。
到目前为止,我们的世界已经出现了比如我们经常看到的问题就是乱码问题,其实这个并不是一个很棘手的问题,只要我们设定一个标准的编码(比如UTF-8),数据库设定好UTL-8编码,PHP默认编码设定好这个编码,前端HTML也在中设定好编码,乱码问题一般都不会出现。