祝各位小伙伴们早日找到自己心仪的工作。
持续学习才不会被淘汰。
地球不爆炸,我们不放假。
机会总是留给有有准备的人的。
加油,打工人!
1数据库事务的四个特性及含义数据库事务的4个特性:原?性、持久性、?致性、隔离性
原?性:整个事务中的所有操作要么全部完成,要么全部都不完成,如果在事务中操作出现异常,那么事务将会进?回滚,就像这个事务从来没有执?过?样;
持久性:在事务完成后,该事务所有的操作都将持久化在数据库中,不会被回滚;
?致性:在事务开始之前和事务结束之后,数据库的完整性约束并没有被破坏;
隔离性:确保在同?时间类只有?个事务处理某个数据。
2mysql的sql语句怎么优化尽量避免使用or、in、notin和在where语句后?使?!=、操作符以及对NULL值得判断,否则数据库引擎将放弃索引而使用全表扫描。使用exists替换in。
尽量放弃使?select*,返回无用的字段会降低查询效率,需要什么数据就取出什么数据。
使?join代替?查询。
设置合适的字段属性:例如尽量把字段设置为NOTNULL,这样引擎就不要对?NULL值。
在表中建立索引,优先考虑where、groupby使用到的字段。
尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描
3varchar与char的区别是什么?大小限制?utf8字符集下varchar最多能存多少个字符?char和varchar最的不同就是个是固定度,个是可变度。由于是可变度,因此存储的是实际字符串再加上个记录字符串度的字节。如果分配给char或varchar列的值超过列的最度,则对值进裁剪。
varchar(M)和char(M),M都表示字符数。varchar的最大长度为个字节,不同的编码所对应的最?可存储的字符数不同。char最多可以存放个字符,不同的编码最?可?字节数不同。字符类型若为utf8,每个字符最多占3个字节,varchar最大长度不能超过。
例:
char(4)定义的是固定长度4,存储时,如果字符数不够4位,会在后面用空格补全存入数据库。
varchar(4)定义的是变长长度,存储时,如果字符没有达到定义的位数4时,也不会在后面补空格。
4索引有什么用?对于建?索引的列,mysql的查询效率会提?很多。
索引可以降低服务需要扫描的数据量,减少了I/O次数
索引可以帮助服务器避免排序和使用临时表
索引可以帮助将随机I/O转为顺序I/O
5sql注入是怎么产生的,如何防止?sql注?产?原因:因为在程序开发过程中没有对sql语句进行检查或未进行关键字检查,导致客户端可以提交sql语句到服务器运行。
如何防止:
对sql与进行检查,过滤。
不要使用sql拼接的方式来拼接sql语句,对常?的方法进行封装避免暴露sql语句(使用ORM)。
6csrf是什么?如何防范?csrf成为跨站伪造请求,利用用户信任过的?站去执??些恶意的操作
如何防范:
检查Referer字段,严格要求该字段只来自于信任的URL;
添加校验token,将token值附加在表单中,攻击者是无法获取这个字,服务端进行检查发现该值为空时将会拒绝服务。
7如何加强MySQL安全,请给出可行的具体措施?避免直接从互联网访问mysql数据库,确保特定主机才拥有访问权限;
定期备份数据库;
禁用或限制远程访问,在my.cnf文件里设置bind-address指定ip;
移除test数据库(默认匿名用户可以访问test数据库);
禁用localinfilemysqlselectload_file("/etc/passwd");在my.cnf里[mysqld]下添加set-variable=local-infile=0
移除匿名账户和废弃的账户;
限制mysql数据库用户的权限;
移除和禁用.mysql_history文件。
8如是数据库慢导致网站打开慢,如何排查并解决?登陆mysql查看有哪些sql语句占用时间过长,howprocesslist;
用explain查看消耗时间过长的SQL语句是否走了索引;
对SQL语句优化,建立索引。
9MySQL有多少种日志错误日志:errorlog,记录出错信息,也记录一些警告信息或者正确的信息;
通用日志:generallog,记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行;
慢查询日志:slowquerylog,设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中;
二进制日志:binarylog,记录对数据库执行更改的所有操作;
中继日志:releylog,在主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件;
事务日志:transactionlog,事务日志的写入类型为"追加",因此其操作为"顺序IO";通常也被称为:预写式日志writeaheadlogging。事务日志文件:ib_logfile0,ib_logfile1。
10MySQL数据库cpu飙升到%的话他怎么处理?当cpu飙升到%时,先用操作系统命令top命令观察是不是mysqld占用导致的,如果不是,找出占用高的进程,并进行相关处理。
如果是mysqld造成的,showprocesslist,看看里面跑的session情况,是不是有消耗资源的sql在运行。找出消耗高的sql,看看执行计划是否准确,index是否缺失,或者实在是数据量太大造成。
一般来说,肯定要kill掉这些线程(同时观察cpu使用率是否下降),等进行相应的调整(比如说加索引、改sql、改内存参数)之后,再重新跑这些SQL。
也有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。
关于我
全网可搜《阿贤Linux》
CSDN、知乎、哔哩哔哩、博客园、51CTO、掘金、思否、开源中国、阿里云、腾讯云、华为云、今日头条、百家号、GitHub、个人博客