1.InnoDB与 Myisam
InnoDB 存储引擎
支持事务。处理大量短期事务能力强
自动崩溃恢复。恢复速度快,不易出错
采用 MVCC 来支持高并发,且实现了四个标准的隔离级别,默认为重复读,并且通过间隙锁策略防止幻读
- 表基于聚簇索引建立。聚簇索引对主键查询有很高性能,因为聚簇索引页的叶子页节点中包含了行数据。二级索引中都必然包含指向聚簇索引的主键列。因此主键列越小,其余二级索引也就相应越小
- 从磁盘读取数据时采用可预测性读,能够在内存中创建 hash 索引以加速读操作的自适应哈希索引,以及能够加速插入操作的插入缓冲区(insert buffer)
- 支持真正的热备份。即不停机备份,MySQL 其他存储引擎做不到
Myisam 存储引擎
- 不支持事务和行级锁。对所有读到的表加共享锁,写入时则加对表加排它锁
- 崩溃后无法安全恢复,容易丢失数据
- 没有聚簇索引的概念,但由于主键或二级索引都是存指向行数据的指针,固查询速度快
- 延迟更新索引。如果在创建 myisam 表的时候,如果指定了 DELAY_KEY_WRITE,在每次修改完成时,修改的索引数据先写入到键缓冲区(in-memory key buffer),只有在清理键或者关闭表的时候才会将对应的索引块写入到磁盘。这样极大地提升写入性能
- 支持使用myisampack对表进行压缩,注意,压缩表不能直接修改数据
2.get 与 post 区别?
1.参数传输方式不同。get 通过地址栏明文传输;post 通过 request body 传输
2.参数传输大小不同。get 一般浏览器不允许URL大于2Kb;post 数据默认为8MB
3.参数传输类型不同。get 只允许 ASCII 码类型数据传输;post 没数据类型限制
4.TCP请求次数不同。对于get,浏览器将http header 与 data 一同发送,产生一次TCP 请求包;对于 post,
浏览器先发送 header,待服务器响应100 continue 之后再发data,产生2次请求包;火狐浏览器 post 为一次
3.exec(commend,$output) 与 eval (commend)区别?
1.exec 是执行外部程序;eval 是把字符串作为PHP 代码执行。它能执行任意 PHP 代码,不安全
2.exec 的返回值为 执行commend 命令最末行输出,可以通过$output数组保存 commend 命令整个输出
4.进制转换
十进制:decimal【dec】 八进制:octonary【oct】 二进制:binary 十六进制:hexadecimal
二进制转十进制:bindec()
十进制转八进制:decoct()
十进制转十六进制:dechex()