前段时间,线上业务偶尔会出现 SQLSTATE[HY000] [1040] Too many connections
的异常。
通常是以下两种原因之一造成的:
max_connections
配置过小访问量过高
小艾的自留地
Stay foolish, Stay hungry
前段时间,线上业务偶尔会出现 SQLSTATE[HY000] [1040] Too many connections
的异常。
通常是以下两种原因之一造成的:
max_connections
配置过小
访问量过高
Mysql造成锁的情况有很多,下面我们就列举一些情况:
DML
操作没有 Commit,再执行删除操作就会锁表。DDL
,继而阻塞所有同表的后续操作。备份数据库是常有的需求,通常是整库备份,整库还原。
但如果只想还原其中部分数据表,该怎么做呢?
在Mysql 中,想要对结果进行排序,通常会使用Order By
子句,使用时,应注意以下几点:
事务是Mysql InnoDB 引擎的一个重要特点,具有ACID 四个特性。
什么是索引?
我们知道在Mysql 中存储小数有三种数据类型可做选择,究竟该选择哪一种数据格式,其实并没有统一的答案,得根据实际场景去分析,哪一种更合适。
MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。
MysqliDb 是基于 mysqli 扩展出来的一个类库,其中封装了很多常用的Mysql 基础操作,相比原生的方式,后者使用起来更加方便。
具有如下特点:
使用composer 安装
1 | composer require thingengineer/mysqli-database-class:dev-master |
因为MysqliDb
没有命名空间,所以我们想要使用的话,不能自动加载,只能先引入。
1 | require "MysqliDb.php"; |
初始化连接有几种方式:
1 | $db = new MysqliDb ('host', 'username', 'password', 'databaseName'); |
1 | $db = new MysqliDb ([ |
1 | $mysqli = new mysqli ('host', 'username', 'password', 'databaseName'); |
向user 表中插入一条记录:
1 | $data = [ |
返回值类型:bool
修改user 表中的一条记录
1 | $data = [ |
返回值类型:bool
1 | $result = $db->get("user", null, "*"); |
返回值:多维数组
1 | $result = $db->getOne("user", "*"); |
返回值:关联数组
1 | $result = $db->where("name", "boo") |
返回值:string
1 | $result = $db->getValue("user", "count(*)"); |
删除user 表中一条记录
1 | $success = $db->where("user_id", "boo") |
1 | $result = $db->rawQuery("select * from user where name = \"boo\"") |
总体来说,MysqliDb 真的挺好用的,基本上可以满足所有日常需求。
这里只是列举了最基本的CURD,更多操作可以参考官网手册。
Mysql 的两张表联表查询可能大家都知道怎么查,但如果是三张表或者是更多张表呢?