php

php-mysql

Persistent connections != connection pooling Connection pooling in PHP There is no connection pooling in php. Q: 为什么 PHP 一直在优化程序执行效率,而不优化数据库连接? A: 至于像java之类那样「真正意义上的连接池」技术,在PHP上是根本不可行的。 PHP就是被设计成每次运行完以后销毁一切状态,任何数据都不会带到下一个执行环境上去的。 所以不可能内置一个全功能的「连接池」,而只能从第三方扩展里实现。 如果你需要全功能连接池技术,那你就不能用PHP而需要用常驻内存型的语言,比如Java,

db

mysql-schema

范式与反范式 在范式化的数据库中,每个事实数据会出现且只出现一次。相反,在反范式化的数据库中,信息是冗余的,可能会存储在多个地方。 范式别名 —— 零冗余存储。 反范式别名 —— 冗余存储。 范式的优点和缺点 优点: 更新快。 修改数据简单。 更小,更好地放在内存里,操作快。 缺点:范式化的 schema 的缺点是通常需要关联。稍微复杂一点的查询语句在符合范式化的 schema 上都可能需要至少一次关联,也许更多。这不但代价昂贵,也可能使一些索引策略无效。例如,范式化可能将列存放在不同的表中,而这些列如果在一个表中本可以属于同一个索引。 反范式的有点和缺点 反范式化的

mysql

mysql-basic

参考书目:《MySQL与MariaDB学习指南》 作者的网站:mysqlresources.com 已经挂了 数据处理基础 插入数据 插入数据的优先级 查询数据 有条件地查询,WHERE 对临时表进行排序,ORDER BY column 限定结果集数量,LIMIT start,num 对结果集进行计数和分组 表连接 备份数据(更新和删除必需) 更新数据 更新指定行 限定行数更新 排序后再按行数更新 同时更新多个表 删除数据 表连接和子查询 表连接 更新已连接的表

db

mysql-key

参考链接:https://github.com/todayqq/PHPerInterviewGuide/blob/master/mysql.md 『浅入深出』MySQL 中事务的实现:https://draveness.me/mysql-transaction# mysql 关键在于 事务 联合索引 高并发访问的锁 分库分表 事务 ACID 事务其实就是并发控制的基本单位;相信我们都知道,事务是一个序列操作,其中的操作要么都执行,要么都不执行,它是一个不可分割的工作单位;数据库事务的 ACID

db

mysql-lock

参考文章: 并发编程系列之一:锁的意义 - 何登成的技术博客 MySQL 加锁处理分析 - 何登成的技术博客 锁 首先,多用户并发修改同一条记录时,肯定是后提交的用户将覆盖掉前者提交的结果了。 高并发的应用场景。 先来就库存超卖问题作描述:一般电子商务网站都会遇到如团购、秒杀、特价之类的活动,而这样的活动有一个共同的特点就是访问量激增、上千甚至上万人抢购一个商品。然而,作为活动商品,库存肯定是很有限的,如何控制库存不让出现超买,以防止造成不必要的损失是众多电子商务网站程序员头疼的问题,这同时也是最基本的问题。 从技术方面剖析,很多人肯定会想到事务,但是事务是控制库存超卖的必要条件,但不是充分必要条件。 举例: 总库存:4个商品

db

db

数据库(DB) 常用数据库: MariaDB/MySQL MongoDB 数据库设计 对所有数据驱动的应用来说,数据库设计应该是应用开发的第一步,这一步至关重要。形象地说,构建一个应用就像是盖一座大厦,地基就是数据库,整个大厦都要依托地基来建设,如果地基打的不好,整个大厦都会出问题。 tip: 之前开发了一个需求模糊的应用,没有把数据库设计做扎实,结果边写代码,边改数据库,按下葫芦起了瓢,两边不停地来回改,把自己折腾的够呛,开发进度也一拖再拖。 数据库设计工具: 要是 MySQL 推荐 Workbench 其他数据库推荐使用 PowerDesigner 如果是个人开发者的话,

yii2

yii2-ar

Active Record (活动记录,以下简称 AR)提供了一个面向对象的接口, 用以访问和操作数据库中的数据。一个 AR 类关联一张数据表, 每个 AR 对象对应表中的一行,对象的属性(即 AR 的特性Attribute)映射到数据行的对应列。 即一条活动记录(AR 对象)对应数据表的一行,AR 对象的属性则映射该行的相应列。 您可以直接以面向对象的方式来操纵数据表中的数据, 例如,假定 Customer AR 类关联着 customer 表, 且该类的