6.mysql 慢查询是什么,一般怎么发生的?
MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒),即运行10秒以上的语句是慢查询语句。
一般来说,慢查询发生在大表(比如:一个表的数据量有几百万),且查询条件的字段没有建立索引,此时,要匹配查询条件的字段会进行全表扫描,耗时超过long_query_time,则为慢查询语句。
7.用mysql语句创建一个user表,具体字段根据实际考虑
CREATE TABLE user
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL ,
cust_address char(50) NULL ,
cust_email char(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB;
面试补充:还可以增加什么字段?每个字段用什么数据类型合适?了解数据库引擎吗?InnoDB 和 MYISAM 有什么区别?
8.简单说说MVC
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图):是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器):是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
9.说说 mysql 事务处理
事务处理(transaction processing)可以用来维护数据库的完整性,它
保证成批的MySQL操作要么完全执行,要么完全不执行。
//给系统添加订单的过程如下。
(1) 检查数据库中是否存在相应的客户(从customers表查询),如果
不存在,添加他/她。
(2) 检索客户的ID。
(3) 添加一行到orders表,把它与客户ID关联。
(4) 检索orders表中赋予的新订单ID。
(5) 对于订购的每个物品在orderitems表中添加一行,通过检索
出来的ID把它与orders表关联(以及通过产品ID与products表关联)。
现在,假如由于某种数据库故障(如超出磁盘空间、安全限制、表
锁等)阻止了这个过程的完成。数据库中的数据可能会存在不一致的情况!
如何解决这种问题?这里就需要使用事务处理了。事务处理是一种
机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完
整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们
或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错误发
生,整组语句提交给(写到)数据库表。如果发生错误,则进行回退(撤
销)以恢复数据库到某个已知且安全的状态。
//因此,请看相同的例子,这次我们说明过程如何工作。
(1) 检查数据库中是否存在相应的客户,如果不存在,添加他/她。
(2) 提交客户信息。
(3) 检索客户的ID。
(4) 添加一行到orders表。
(5) 如果在添加行到orders表时出现故障,回退。
(6) 检索orders表中赋予的新订单ID。
(7) 对于订购的每项物品,添加新行到orderitems表。
(8) 如果在添加新行到orderitems时出现故障,回退所有添加的orderitems行和orders行。
(9) 提交订单信息。
管理事务处理的关键在于将SQL语句组分解为逻辑块,并明确规定数据何时应该回退,何时不应该回退。