成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP面試MySQL數(shù)據(jù)庫(kù)的面試題

awokezhou / 1503人閱讀

摘要:自己整理了一篇什么是數(shù)據(jù)庫(kù)三級(jí)封鎖協(xié)議的文章,關(guān)注公眾號(hào)琉憶編程庫(kù),回復(fù)鎖,我發(fā)給你。以下內(nèi)容部分來自程序員面試筆試寶典和程序員面試筆試真題解析如需轉(zhuǎn)載請(qǐng)注明出處。

你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。

本周(2019.3.4至3.8)的一三五更新的文章如下:

周一:PHP面試MySQL數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)
周三:PHP面試MySQL數(shù)據(jù)庫(kù)的索引
周五:PHP面試MySQL數(shù)據(jù)庫(kù)的面試真題

今天周五,提前祝各位周末愉快。

自己整理了一篇“什么是數(shù)據(jù)庫(kù)三級(jí)封鎖協(xié)議?”的文章,關(guān)注公眾號(hào):“琉憶編程庫(kù)”,回復(fù):“”,我發(fā)給你。

以下內(nèi)容部分來自《PHP程序員面試筆試寶典》和《PHP程序員面試筆試真題解析》如需轉(zhuǎn)載請(qǐng)注明出處。


【真題1】執(zhí)行以下 SQL 語句后將發(fā)生( )。
BEGIN TRANSACTION
DELETE FROM MYTABLE WHERE ID=1
DELETE FROM OTHERTABLE
ROLLBACK TRANSACTION

A.OTHERTABLE 中的內(nèi)容將被刪除

B.OTHERTABLE 和 MYTABLE 中的內(nèi)容都會(huì)被刪除

C.OTHERTABLE 中的內(nèi)容將被刪除,MYTABLE 中 ID 是 1 的內(nèi)容將被刪除

D.?dāng)?shù)據(jù)庫(kù)沒有變化

參考答案:D。

分析:這個(gè)查詢是一個(gè)事務(wù),并且這個(gè)事務(wù)的最后有回滾,數(shù)據(jù)庫(kù)不會(huì)有變化。


【真題2】如何進(jìn)行數(shù)據(jù)庫(kù)優(yōu)化?

數(shù)據(jù)庫(kù)優(yōu)化的過程可以使用以下的方法進(jìn)行:

1)選取最適用的字段屬性,盡可能減少定義字段長(zhǎng)度,盡量把字段設(shè)置NOT NULL,例如"省份、性別",最好設(shè)置為ENUM。

2)使用連接(JOIN)來代替子查詢。

① 刪除沒有任何訂單客戶:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)。

② 提取所有沒有訂單客戶:

 SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)。

③ 提高b的速度優(yōu)化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo. customerid=orderinfo.customerid WHERE orderinfo.customerid IS NULL。

3)使用聯(lián)合(UNION)來代替手動(dòng)創(chuàng)建的臨時(shí)表。創(chuàng)建臨時(shí)表:SELECT name FROM "nametest" UNION SELECT username FROM "nametest2"。

4)事務(wù)處理。保證數(shù)據(jù)完整性,例如添加和修改。同時(shí),如果兩者成立,則都執(zhí)行,一者失敗都失敗:

mysql_query("BEGIN");

mysql_query("INSERT INTO customerinfo (name) VALUES ("$name1")";

mysql_query("SELECT * FROM "orderinfo" where customerid=".$id");

mysql_query("COMMIT");


5)鎖定表,優(yōu)化事務(wù)處理。用一個(gè)SELECT語句取出初始數(shù)據(jù),通過一些計(jì)算,用UPDATE語句將新值更新到表中。包含有WRITE關(guān)鍵字的LOCK TABLE語句可以保證在UNLOCK TABLES命令被執(zhí)行之前,不會(huì)有其他的訪問來對(duì)customerinfo表進(jìn)行插入、更新或者刪除的操作。

mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

mysql_query("SELECT customerid FROM "customerinfo" where id=".$id);

mysql_query("UPDATE "orderinfo" SET ordertitle="$title" where customerid=".$id);

mysql_query("UNLOCK TABLES");


6)使用外鍵,優(yōu)化鎖定表。把customerinfo里的customerid映射到orderinfo里的customerid,任何一條沒有合法的customerid的記錄不會(huì)寫到orderinfo里。

 CREATE TABLE customerinfo

   (

     customerid INT NOT NULL,

     PRIMARY KEY(customerid)  

   )TYPE = INNODB;

   CREATE TABLE orderinfo

   (

     orderid INT NOT NULL,

     customerid INT NOT NULL,

     PRIMARY KEY(customerid,orderid),

     FOREIGN KEY (customerid) REFERENCES customerinfo

     (customerid) ON DELETE CASCADE   

   )TYPE = INNODB;


注意:"ON DELETE CASCADE",該參數(shù)保證當(dāng)customerinfo表中的一條記錄刪除的話同時(shí)也會(huì)刪除order。

表中的該用戶的所有記錄,注意使用外鍵時(shí)要定義數(shù)據(jù)庫(kù)引擎為INNODB。


【真題3】如何選擇正確的存儲(chǔ)引擎?

在MySQL中有兩個(gè)存儲(chǔ)引擎:MyISAM和InnoDB,每個(gè)引擎都有利有弊。

MyISAM適合于一些需要大量查詢的應(yīng)用,但其對(duì)于有大量寫操作的支持并不是很好。甚至只是需要update一個(gè)字段,整個(gè)表都會(huì)被鎖起來,而其他進(jìn)程,就算是讀進(jìn)程都無法操作直到讀操作完成。另外,MyISAM 對(duì)于 SELECT COUNT(*) 這類的計(jì)算是超快無比的。

InnoDB 的趨勢(shì)會(huì)是一個(gè)非常復(fù)雜的存儲(chǔ)引擎,對(duì)于一些小的應(yīng)用,它會(huì)比 MyISAM 還慢。但是它支持“行鎖”,于是在寫操作比較多的時(shí)候,會(huì)更優(yōu)秀。并且,它還支持更多的高級(jí)應(yīng)用,例如事務(wù)。


【真題4】用什么方法檢查PHP腳本的執(zhí)行效率(通常是腳本執(zhí)行時(shí)間)和數(shù)據(jù)庫(kù)SQL的效率(通常是數(shù)據(jù)庫(kù)query時(shí)間),并定位和分析腳本執(zhí)行和數(shù)據(jù)庫(kù)查詢的瓶頸所在?

參考答案:檢查PHP腳本的執(zhí)行效率的方法如下:可以在檢查的代碼開頭記錄一個(gè)時(shí)間,然后在代碼的結(jié)尾也記錄一個(gè)時(shí)間,結(jié)尾時(shí)間減去開頭時(shí)間取這個(gè)時(shí)間的差值,從而檢查PHP的腳本執(zhí)行效率,記錄時(shí)間可以使用microtime()函數(shù)。

檢查數(shù)據(jù)庫(kù)SQL的效率的方法如下:可以通過explain顯示MySQL如何使用索引來處理select語句及連接表,幫助選擇更好的索引和寫出更優(yōu)化的查詢語句。然后啟用slow query log記錄慢查詢,通過查看SQL的執(zhí)行時(shí)間和效率來定位分析腳本執(zhí)行的問題和瓶頸所在。


自己整理了一篇“什么是數(shù)據(jù)庫(kù)三級(jí)封鎖協(xié)議?”的文章,關(guān)注公眾號(hào):“琉憶編程庫(kù)”,回復(fù):“”,我發(fā)給你。

【真題5】 以下說法正確的是( )。

A.使用索引能加快插入數(shù)據(jù)的速度

B.良好的索引策略有助于防止跨站攻擊

C.應(yīng)當(dāng)根據(jù)數(shù)據(jù)庫(kù)的實(shí)際應(yīng)用合理設(shè)計(jì)索引

D.刪除一條記錄將導(dǎo)致整個(gè)表的索引被破壞

參考答案:C。

分析:索引的作用主要是幫助數(shù)據(jù)庫(kù)快速查找到對(duì)應(yīng)的數(shù)據(jù),并不能加快插入數(shù)據(jù)的速度,所以,選項(xiàng)A錯(cuò)誤。

索引不能夠幫助防止跨站攻擊,所以,選項(xiàng)B錯(cuò)誤。

創(chuàng)建合理的索引需要分析數(shù)據(jù)庫(kù)的實(shí)際用途并找出它的弱點(diǎn)。優(yōu)化腳本中的冗余查詢同樣也能提高數(shù)據(jù)庫(kù)效率。索引是占用物理空間的,所以在實(shí)際的應(yīng)用中是要合理設(shè)計(jì)使用索引的。所以,選項(xiàng)C正確。

索引是一種表結(jié)構(gòu),刪除一條數(shù)據(jù)也不會(huì)影響到整個(gè)表的索引,并且索引不一定是數(shù)字,也可以是字符串。所以,選項(xiàng)D錯(cuò)誤。


【真題6】下列關(guān)于全文檢索技術(shù)的說法中,不正確的是( )。

A.Sphinx是一個(gè)基于SQL的全文檢索引擎,可以結(jié)合MySQL做全文搜索,它可以提供比數(shù)據(jù)庫(kù)本身更專業(yè)的搜索功能

B.Solr是新一代的全文檢索組件,它比Lucene的搜索效率高很多,還能支持HTTP的訪問方式,PHP調(diào)用Solr也很方便

C.MySQL中把一個(gè)字段建立FULLTEXT索引,就可以實(shí)現(xiàn)全文檢索,目前MyISAM和InnoDB的table都支持FULLTEXT索引

D.Lucene附帶的二元分詞分析器CJKAnalyzer切詞速度很快,能滿足一般的全文檢索需要

參考答案:B。

分析:Sphinx是一個(gè)基于SQL的全文檢索引擎,可以結(jié)合MySQL、PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫(kù)本身更專業(yè)的搜索功能,使得應(yīng)用程序更容易實(shí)現(xiàn)專業(yè)化的全文檢索。

Solr是一個(gè)獨(dú)立的企業(yè)級(jí)搜索應(yīng)用服務(wù)器,用戶可以通過HTTP請(qǐng)求訪問,它是采用JAVA5開發(fā),基于Lucene的全文搜索服務(wù)器,同時(shí)對(duì)其進(jìn)行了擴(kuò)展,提供了比Lucene更為豐富的查詢語言,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對(duì)查詢性能進(jìn)行了優(yōu)化,并且提供了一個(gè)完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。并且Solr比Lucene的搜索效率高很多,但是PHP調(diào)用Solr并不方便,選項(xiàng)B的說法錯(cuò)誤。

MySQL中的MyISAM和InnoDB都是支持FULLTEXT全文索引的。全文搜索引擎可以在不使用模板匹配操作的情況下查找單詞或短語。


【真題7】考慮如下SQL語句,哪個(gè)選項(xiàng)能對(duì)返回記錄的條數(shù)進(jìn)行限制?( )(雙選)

SELECT * FROM MY_TABLE

A.如果可能,那么把查詢轉(zhuǎn)換成存儲(chǔ)例程

B.如果程序允許,那么給查詢指定返回記錄的范圍

C.如果可能,那么添加 where 條件

D.如果DBMS允許,那么把查詢轉(zhuǎn)換成視圖

參考答案:B、C。

分析:有兩個(gè)方法能限制返回記錄的條數(shù)——使用 where 條件或limit關(guān)鍵字指定查詢返回的記錄的范圍。

通常情況下,如果沒有特殊需要,那么盡量不要用 select *,這會(huì)浪費(fèi)大量的數(shù)據(jù)緩存。


以上內(nèi)容摘自《PHP程序員面試筆試寶典》和《PHP程序員面試筆試真題解析》書籍,目前本書沒有電子版,可到各大電商平臺(tái)購(gòu)買紙質(zhì)版。

更多PHP相關(guān)的面試知識(shí)、考題可以關(guān)注公眾號(hào)獲?。?strong>琉憶編程庫(kù)

對(duì)本文有什么問題或建議都可以進(jìn)行留言,我將不斷完善追求極致,感謝你們的支持。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30955.html

相關(guān)文章

  • 一個(gè) 16年畢業(yè)生所經(jīng)歷 PHP 面試

    摘要:正確做法是給加索引,還有聯(lián)合索引,并不能避免全表掃描。 前言:有收獲的話請(qǐng)加顆小星星,沒有收獲的話可以 反對(duì) 沒有幫助 舉報(bào)三連 有心的同學(xué)應(yīng)該會(huì)看到我這個(gè)noteBook下面的其它知識(shí),希望對(duì)你們有些許幫助。 本文地址 時(shí)間點(diǎn):2017-11 一個(gè)16年畢業(yè)生所經(jīng)歷的php面試 一、什么是面試 二、面試準(zhǔn)備 1. 問:什么時(shí)候開始準(zhǔn)備? 2. 問:怎么準(zhǔn)備? 三、面試...

    dabai 評(píng)論0 收藏0
  • PHPer 面試指南-擴(kuò)展閱讀資源整理

    摘要:前端篇收集的前端面試題和答案前端開發(fā)面試題史上最全的前端面試題匯總及答案前端工程師手冊(cè)協(xié)議工作原理協(xié)議運(yùn)行機(jī)制的概述協(xié)議篇原理原理解析的工作原理與的區(qū)別理解后端篇年的面試總結(jié)垃圾回收機(jī)制面向?qū)ο笤O(shè)計(jì)淺談?wù)f清楚是什么和的區(qū)別索引原理及慢查 前端篇 收集的前端面試題和答案 前端開發(fā)面試題 史上最全的web前端面試題匯總及答案 前端工程師手冊(cè) HTTP協(xié)議:工作原理 SSL/TLS協(xié)議運(yùn)行...

    wemall 評(píng)論0 收藏0
  • 如何"有計(jì)劃,高效率,優(yōu)簡(jiǎn)歷"應(yīng)對(duì)面試

    摘要:雖然有了十全的計(jì)劃,但如何高效率去記住上面那么多東西是一個(gè)大問題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無準(zhǔn)備就去面試的后果,一開始心態(tài)真的爆炸,但是又不服氣,一想到每次回來后家人朋友問我面試結(jié)果的期待臉,越覺得必須付出的行動(dòng)來證明自己了。 面經(jīng)傳送門:一個(gè)1年工作經(jīng)驗(yàn)的PHP程序員是如何被面試官虐的? 下面是我花費(fèi)兩個(gè)星期做的準(zhǔn)備,主要分三部分: 有計(jì)劃——計(jì)劃好...

    gyl_coder 評(píng)論0 收藏0
  • php面試問答

    摘要:結(jié)合實(shí)際面試,匯總自己遇到的問題,以及網(wǎng)上其他人遇到的問題,嘗試提供簡(jiǎn)潔準(zhǔn)確的答案包含安全網(wǎng)絡(luò)協(xié)議服務(wù)器業(yè)務(wù)設(shè)計(jì)線上故障個(gè)人簡(jiǎn)歷自我介紹離職原因職業(yè)規(guī)劃準(zhǔn)備問題等部分感覺不錯(cuò)的話,歡迎一般面試流程目錄閱讀體系結(jié)構(gòu)字段類型和數(shù)據(jù)類型區(qū)別 結(jié)合實(shí)際PHP面試,匯總自己遇到的問題,以及網(wǎng)上其他人遇到的問題,嘗試提供簡(jiǎn)潔準(zhǔn)確的答案包含MySQL、Redis、Web、安全、網(wǎng)絡(luò)協(xié)議、PHP、服務(wù)...

    wendux 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<