最近半年,作为部门的面试官之一,参加了许多次招聘面试.数据库知识,尤其是对数据的增删改查等操作是软件测试人员的基本功,是面试过程中的必考项.在这其中,有一道题,是我每次面试的必考题. 题目 以Mysql为例,假设有一张数据库表user_info,第一列是id,用作唯一标识:第二列是user_name,即用户姓名:第三列是some_data,这是一列存储某某数值的列,比如用户的年收入.用户的年龄.用户完成的订单数等等.需求是,找出这张表中,按第三列的数值降序排列,排在前5的所有用户记录. 题解 显…
php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提升了整个数据库集群的扩展性.不论是通过垂直切分,还是水平切分.都能够让系统遇到瓶颈的可能性更小.尤其是当我们使用垂直和水平相结合的切分方法之后,理论上将不会再遇到扩展瓶颈了. 1.分库分表解决系统负载的流程是什么? 1.先垂直分表,代价小 2.再水平分表 每一个应用系统的负载都是一步一步增长上来的,…
php面试专题---MySQL分表 一.总结 一句话总结: 分库分表要数据达到一定的量级才用,这样才有效率,不然利不一定大于弊,可能会增加一次I/O消耗 1.分库分表的使用量级是多少? 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表. 2.分库分表的使用场景? 当产品运营很多年时数据量就会变的很大,如QQ的用户表,不知道QQ有多少用户,而且一个人可能有多个QQ号,如订单表,比如淘宝的订单数据有多少,都是惊人的数据量 3.水平分表的标准及实例是什么? 1.根据业务:水平分割…
php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物理分区对象:分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的对象,可以独立处理,可以作为表的一部分进行处理. 分区不影响程序员编程:分区对应用来说是完全透明的,不影…
php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等. 1.mysql建立索引的几个准则? 1.合理:合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度. 2.适量:索引越多,更新数据的速度越慢. 3.分布式缓存:当你的程序和数据库结构/SQL语句已经优化到无法优化的程度,而程序瓶颈并不能顺利解决,那就是应该考虑使用诸…
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行计划和B+树以后,优化SQL语句还是比较简单的,当然还有特别复杂的SQL,我这里只是一些简单例子,当然再复杂的SQL,还是逃脱不了原理性的东西. 1.mysql中无法使用索引的情况? (1).以%开头的like查询 (2).数据类型出现隐式转换的时候也不会使用索引,特别是当列类型是字符串,那么一定记…
php面试专题---Mysql索引类型.介绍及优点 一.总结 一句话总结: 精品视频讲解里面的资料来源也是通过各种资料,比如博客.书等,只不过是基于讲解者的知识体系有整理的过程 1.B-Tree索引三大优点? 1.索引大大减少服务器扫描的数据量 2.索引帮助服务器避免排序和临时表 3.索引可以减少随机I/O变为顺序I/O 2.索引是否为最好的解决方案? 1.非常小的表,大部分情况全表扫描更高效 2.中到大型表,索引非常有效 3.特大表[TB级别],可使用分区技术,块级元数据技术替换索引 二.My…
php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动) 2.在哪些列上面创建索引比较合适? 1.连接的列:在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度: 2.范围:在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的: 3.排序:在经常需要排序的列上创建索…
既然要操作数据库就从数据库链接写起,包括建库.建表.增删该查字段及约束,删库,删表的数据,以下主要是对我以往面试的总结,欢迎补充! 一.数据库连接 1.连接本机(p和密码123456之间无空格) mysql -u username -p123456; 2.远程连接 mysql  -h 要访问的ip地址 -u username -p123456; 二.对库的操作 create database db_name; drop database db_name; show databases; use…
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.你总是想一步登天,却不知道路是一步步走出来的 大概是放年假前一个月开始招聘吧,陆陆续续到目前为止安卓面试10几个,IOS面试了15个左右,本以为很好招聘的,没想到没有一个合适的,要求本不高只想基础扎实一些,但是就这一条基础扎实是真的难,一个Java多线程中wait()与sleep()区别,notify()与notifyAll()就没有说的特别清楚的. 面试这种印象比较深的有一个小姑娘,如下对话: 我:"安卓有过培训经历吗?" 小姑…