PHP面试题3次握手的请求头 php面试题( 四 )


linux mysql proxy 的安装 , 配置 , 以及读写分离
mysql replication 互为主从的安装及配置 , 以及数据同步
优点:扩展性好 , 没有多个分表后的复杂操作(php 代码)
缺点:单个表的数据量还是没有变 , 一次操作所花的时间还是那么多 , 硬件开销大 。
三、简述一下数据库主从复制 , 读写分离
* 什么是主从复制
主从复制 , 是用来建立一个和主数据库完全一样的数据库环境 , 称为从数据库;
* 主从复制的原理:
1.数据库有个bin-log二进制文件 , 记录了所有的sql语句 。
2.只需要把主数据库的bin-log文件中的sql语句复制 。
3.让其从数据的relay-log重做日志文件中再执行一次这些sql语句即可 。
* 主从复制的作用
1.做数据的热备份 , 作为后备数据库 , 主数据库服务器故障后 , 可切换到从数据库继续工作 , 避免数据丢失 。
2.架构的扩展 。业务量越来越大 , I/O访问频率过高 , 单机无法满足 , 此时做多库的存储 , 降低磁盘I/O访问频率 , 提高单机的I/O性能
3.主从复制是读写分离的基础 , 使数据库能制成更大 的并发 。例如子报表中 , 由于部署报表的sql语句十分慢 , 导致锁表 , 影响前台的服务 。如果前台服务使用master , 报表使用slave , 那么报表sql将不会造成前台所 , 保证了前台的访问速度 。
* 主从复制的几种方式:
1.同步复制:所谓的同步复制 , 意思是master的变化 , 必须等待slave-1,slave-2,…,slave-n完成后才能返回 。
2.异步复制:如同AJAX请求一样 。master只需要完成自己的数据库操作即可 。至于slaves是否收到二进制日志 , 是否完成操作 , 不用关心 。MYSQL的默认设置 。
3.半同步复制:master只保证slaves中的一个操作成功 , 就返回 , 其他slave不管 。
这个功能 , 是由google为MYSQL引入的 。
* 关于读写分离
在完成主从复制时 , 由于slave是需要同步master的 。所以对于insert/delete/update这些更新数据库的操作 , 应该在master中完成 。而select的查询操作 , 则落下到slave中 。
程序员面试必备PHP基础面试题 – 第十一天一、两张表 city表和province表 。分别为城市与省份的关系表 。
表名:city
id City Provinceid
1 广州 1
2 深圳 1
3 惠州 1
4 长沙 2
5 武汉 3
………. 广州
表名称:province:
id Province
1 广东
2 湖南
3 湖北
……….
1、写一条sql语句关系两个表 , 实现:显示城市的基本信息 。显示字段:城市id  , 城市名 ,  所属省份。
如:
Id(城市id) Cityname(城市名) Privence(所属省份)
2、如果要统计每个省份有多少个城市 , 请用group by 查询出来 。显示字段:省份id  , 省份名 , 包含多少个城市 。
二、主键 和外键表示什么?一般用于做什么?
主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键 。一个主键是唯一识别一个表的每一行记录 , 但这只是其作用的一疗分 , 主键的主要作用是将记录和存放在其他表中的数据进行关联 , 在这一点上 , 主键是不同表中各记录间的简单指针 , 主键约整就是确定表中的每一条记录 , 主键不能是空值 , 唯一约束是用于指定一个或多个列的组合值具有唯一性 , 以防止在列中输入重复的值 , 所以 , 主键的值对用户而言是没有什么意义 , 并且和它赋予的值也没有什么特别联系 。
外键:若有两个表A , B , C是A的主键 , 而B中也有C字段 , 则C就是表B的外键 , 外键约束主要用来维护两个表之间数据的一致性 。A为基本表 , B为信息表 。
在数据库中 , 常常不只是一个表 , 这些表之间也不是相互独立的 , 不同的表之间需要建立一种关系 , 才能将它们的数据相互沟通 , 而在这个沟通过程中 , 就需要表中有一个字段作为标志 , 不同的记录对应的字段取值不能相同 , 也不能是空白的 , 通过这个字段中不同的值可以区别各条记录 , 就像我们区别不同的人 , 每个人都有名字 , 但它却不能作为主键 , 因为人名很容易出现重复 , 而身份证号是每个人都不同的 , 所以可以根据它来区别不同的人 , 数据库的表中作为主键的段段就要像人的身份证号一样 , 必须是每个记录的值都不同 , 这才能根据

秒懂生活扩展阅读