1.InnoDB不支持FULLTEXT類型的索引。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、虛擬主機、營銷軟件、網(wǎng)站建設、河間網(wǎng)站維護、網(wǎng)站推廣。
2.InnoDB 中不保存表的具體行數(shù),也就是說,執(zhí)行select count(*) from
table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數(shù)即可。注意的是,當count(*)語句包含
where條件時,兩種表的操作是一樣的。
3.對于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
4.DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。MyISAM 是表所
innodb是行鎖
5.LOAD TABLE FROM MASTER(從主負載表)操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數(shù)據(jù)后再改成InnoDB表,但是對于使用的額外的InnoDB特性(例如外鍵)的表不適用。
另外,InnoDB表的行鎖也不是絕對的,如果在執(zhí)行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表,例如update
table set num=1 where name like “"2%”
6.InnoDB 支持事物
選擇存儲引擎 根據(jù)實際情況選擇。
一般情況下如果查詢多建議使用myIsam 。
如果你需要事務處理或是外鍵,那么InnoDB 可能是比較好的方式。
優(yōu)化MYSQL數(shù)據(jù)庫的方法:
1,選取最適用的字段屬性,盡可能減少定義字段長度,盡量把字段設置NOT NULL,例如'省份,性別',最好設置為ENUM
2,使用join代替子查詢
3,使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表
4,事務處理(保證數(shù)據(jù)完整性,例如添加和修改同時,兩者成立則都執(zhí)行,一者失敗都失敗)
5,適當建立索引(如何建立索引?索引的利與弊?)
6,優(yōu)化sql語句
7,explain可以看到mysql執(zhí)行計劃
8,分表(垂直分表,水平分表?)
9,數(shù)據(jù)庫主從
一、兩張表 city表和province表。分別為城市與省份的關系表。
表名:city
id City Provinceid
1 廣州 1
2 深圳 1
3 惠州 1
4 長沙 2
5 武漢 3
………. 廣州
表名稱:province:
id Province
1 廣東
2 湖南
3 湖北
……….
1、寫一條sql語句關系兩個表,實現(xiàn):顯示城市的基本信息。顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
2、如果要統(tǒng)計每個省份有多少個城市,請用group by 查詢出來。顯示字段:省份id ,省份名,包含多少個城市。
二、主鍵 和外鍵表示什么?一般用于做什么?
主鍵:能夠唯一表示數(shù)據(jù)表中的每個記錄的字段或者字段的組合就稱為主鍵。一個主鍵是唯一識別一個表的每一行記錄,但這只是其作用的一療分,主鍵的主要作用是將記錄和存放在其他表中的數(shù)據(jù)進行關聯(lián),在這一點上,主鍵是不同表中各記錄間的簡單指針,主鍵約整就是確定表中的每一條記錄,主鍵不能是空值,唯一約束是用于指定一個或多個列的組合值具有唯一性,以防止在列中輸入重復的值,所以,主鍵的值對用戶而言是沒有什么意義,并且和它賦予的值也沒有什么特別聯(lián)系。
外鍵:若有兩個表A,B,C是A的主鍵,而B中也有C字段,則C就是表B的外鍵,外鍵約束主要用來維護兩個表之間數(shù)據(jù)的一致性。A為基本表,B為信息表。
在數(shù)據(jù)庫中,常常不只是一個表,這些表之間也不是相互獨立的,不同的表之間需要建立一種關系,才能將它們的數(shù)據(jù)相互溝通,而在這個溝通過程中,就需要表中有一個字段作為標志,不同的記錄對應的字段取值不能相同,也不能是空白的,通過這個字段中不同的值可以區(qū)別各條記錄,就像我們區(qū)別不同的人,每個人都有名字,但它卻不能作為主鍵,因為人名很容易出現(xiàn)重復,而身份證號是每個人都不同的,所以可以根據(jù)它來區(qū)別不同的人,數(shù)據(jù)庫的表中作為主鍵的段段就要像人的身份證號一樣,必須是每個記錄的值都不同,這才能根據(jù)
主鍵的值來確定不同的記錄。
關系:外鍵一定是另外某個表的主鍵。
三、select now(),Date_ADD(now(),INTERVAL 14 day),Date_SUB(now(),INTERVAL 3 Day) from table; 會獲得什么內(nèi)容,請寫出來。
會獲得三條數(shù)據(jù):
第一條:當前時間;
第二條:當前時間加上14天;
第三條:當前時間減去3天。
四、您所知道的MYSQL 數(shù)據(jù)庫備份,還原方式有哪幾種?
備份:
一,搭建主從架構,master-slave,通過binlog文件同步復制主庫的數(shù)據(jù),也可以直接通過binlog文件恢復數(shù)據(jù)。
二,通過系統(tǒng)計劃任務執(zhí)行mysqldump做周期性全備份。
三,物理備份,直接拷貝數(shù)據(jù)文件、參數(shù)文件、日志文件。
還原:
一.通過mysql操作工具,如phpmyadmin,sqlyog等導入備份過的數(shù)據(jù)庫文件。
二.將物理備份的文件拷貝到mysql的data目錄下
五、內(nèi)容管理系統(tǒng)中,表message有如下字段
id 文章id
title 文章標題
content 文章內(nèi)容
category_id 文章分類id
hits 點擊量
創(chuàng)建上表,寫出MySQL語句
六、同樣上述內(nèi)容管理系統(tǒng):表comment記錄用戶回復內(nèi)容,字段如下
comment_id 回復id
id 文章id,關聯(lián)message表中的id
comment_content 回復內(nèi)容
現(xiàn)通過查詢數(shù)據(jù)庫需要得到以下格式的文章標題列表,并按照回復數(shù)量排序,回復最高的排在最前面
文章id 文章標題 點擊量 回復數(shù)量
用一個SQL語句完成上述查詢,如果文章沒有回復則回復數(shù)量顯示0
七、內(nèi)容管理系統(tǒng),表category保存分類信息,字段如下
category_id int(4) not null auto_increment;
category_name varchar(40) not null;
用戶輸入文章時,通過選擇下拉菜單選定文章分類
寫出如何實現(xiàn)這個下拉菜單
八、PHP文件操作
1、內(nèi)容管理系統(tǒng):用戶提交內(nèi)容后,系統(tǒng)生成靜態(tài)HTML頁面;寫出實現(xiàn)的基本思路
2、簡單描述用戶修改發(fā)布內(nèi)容的實現(xiàn)流程和基本思路
1)當用戶提交后生成一個由url地址MD5后的文件的編譯頁面,用文件處理file函數(shù)生成一個模板合成頁,判斷模板編譯頁是否有,模板頁無或者編譯頁的創(chuàng)建時間戳小于模板頁的修改時間都會從新生成編譯頁面,編譯后的頁面會調(diào)用對應數(shù)據(jù)庫的值顯示在頁面中,通過對內(nèi)存數(shù)據(jù)的讀取釋放,顯示出我們看到的靜態(tài)數(shù)據(jù),然后用file文件將其保存起來生成靜態(tài)的頁面
2)當用戶修改了發(fā)布內(nèi)容都會修改數(shù)據(jù)相關的內(nèi)容,并通過編譯頁面更新靜態(tài)數(shù)據(jù)并用文件的方式緩存起來,當用戶查看時將不做任何數(shù)據(jù)庫查找,直接調(diào)用該緩存文件即可
高并發(fā)大訪問量的mysql優(yōu)化,服務器優(yōu)化?
字段建索引、主從數(shù)據(jù)庫、讀寫分離、表分區(qū)、負載均衡。
linux的慢查詢?nèi)罩緯涗沵ysql的超時查詢sql語句,定期察看進行優(yōu)化。
2.大訪問量下秒殺模塊程序怎么設計,如果使用mysql會有多賣的情況,就是訂單超過庫存。
將訂單數(shù)據(jù)緩存到內(nèi)存,如果用數(shù)據(jù)庫直接崩掉,毫無懸念的。
3.緩存的使用
能用靜態(tài)的用靜態(tài),不能靜態(tài)的用內(nèi)存緩存,例如memcache、redis,不能緩存的用數(shù)據(jù)庫。
4.session可不可以跨域?怎么跨域?
將PHP session機制重寫(PHP提供),將session存儲在memcache或者數(shù)據(jù)庫就可以跨域了。
另外session能以三種方式存儲,文件、數(shù)據(jù)庫、緩存。
5.了不了解非關系型數(shù)據(jù)庫?
mongodb
6.會不會寫shell腳本以及l(fā)inux的操作
還會問一下時下流行的東西,比如做沒做過微信開發(fā),例如微信支付開發(fā)、APP移動開發(fā),等等問題。
問的核心東西都是圍繞這些轉(zhuǎn)的,如果有筆試會讓你寫sql,php功能(例如冒泡排序等排序),還有邏輯題。
我當初面試了很多,這是一個我的面試經(jīng)驗的總結(jié),純手打忘采納。
簡單的列出10點供你參考吧
1、php基礎知識
2、常用函數(shù)使用
3、排序算法
4、引用變量的理解
5、session cookie 的理解
6、http請求 get post php://input 使用
7、mysql數(shù)據(jù)庫鏈表查詢,索引優(yōu)化方案等
8、linux基本命名的使用 crontab,grep ,tail等
9、緩存 redis,memcached等的使用
10、市場上常用的流行PHP框架掌握,熟悉情況