PHP与数据库基础

一,链接数据库的三种方式:
1.1 mysql 系列函数
1.2 mysqli 系列函数:提供了过程化和面向对象两种风格的API,增加了预编译和参数绑定等;
1.3 PDO:PDO扩展定义了一个访问数据库的轻量,持久的接口;

二,PDO参数绑定与预编译;

MYSQL ,为防止注入攻击,通常使用intval,addslashes等函数对传入的参数进行转义,转变成SQL中合法的参数类型。

三,事务;(INNODB支持事务, MYISAM不支持事务);

特性:原子性,一致性,独立性,持久性;
一旦事务不成功,将回滚到初始状态,保证数据的一致性;
beginTransaction() 开启事务
commit() 提交事务
rollback() 回滚事务

四,数据库应用优化;

1.SQL 语句的优化; 2.数据库服务器和配置的优化;

SQL优化的10大原则:
4.1 尽量避免在列上进行运算,会导致索引失效;
4.2 使用JOIN时,应该用小结果集驱动大结果集。同时把复杂的JOIN查询拆分成多个Query。可能导致表的锁定和堵塞;
4.3 LIKE模糊查询避免使用%%;
4.4 少使用 * 查询 节约内存
4.5 批量插入数据节省交互;
4.6 不要使用rand() 函数获取多条随机记录;
4.7 避免使用NULL;
4.8 不要使用count(id), 而应该是count(*);
4.9 尽可能使用索引排序;

合理和设计索引;每个表的索引应该在5个以下,合理的利用部分索引和联合索引;

MYSIAM注重性能,INNODB 注重事务,故使用MYSIAM 类的表做非事务型的业务;

五,读写比(R/W)的概念:最佳在30:1

六,MYSQL瓶颈以及应对措施:千万级的数据时;

  1. 增加MYSQL配置中buffer和Cache的数值,增加服务器CPU数量和内存的大小;
  2. 使用衍生版 MariaDB;
  3. 对数据库进行分表,分区的操作,减少单表面积;
    4.使用NoSQL等解决方案 Redis, Memached;

七,范式与反范式;
八, 数据库分区 MYSQL5.1 以上版本才支持;
九, PHP 函数 ignore_user_abort定时执行任务的实现

  ignore_user_abort 设置与客户机断开是否会终止脚本的执行。

本函数返回 user-abort 设置的之前的值(一个布尔值)。
int ignore_user_abort ([ string $value ] )

如果设置为 true,则忽略与用户的断开,如果设置为 false,会导致脚本停止运行。
如果未设置该参数,会返回当前的设置。
PHP 不会检测到用户是否已断开连接,直到尝试向客户机发送信息为止。简单地使用 echo 语句无法确保信息发送,参阅 flush() 函数。

十,MYSQL 模拟消息队列(异步处理思想);

队列储存-->异步处理(储存过程和定时任务event);

队列(queue)和栈一样,是一种线性表结构,
队列是一种先进先出(FIFO)的数据结构。
队列只允许在后端(rear)进行插入操作,在前端(front)进行删除操作。

Screenshot.png

入。

十一,SQL注入:在原有的SQL语句上附加一段SQL代码,构造特殊的 SQL语句;

防止SQL注入:如果是整形或者字段,用intval()转化;
如果是字符型变量, 用addslashes()会把所有的单引号,双引号,反斜杠和空子符转为含有反斜线的溢出字符。
转义和过滤一些特殊字符, 如%等;

你可能感兴趣的:( PHP与数据库基础)