一.基礎知識
1.mysql邏輯上可以分為多少層?
sql層:查詢的解析,優化,執行
儲存引擎:資料儲存,鎖,事務管理,恢復
2.儲存引擎最常用有那些?簡單的描述下
myisam:預設的mysql外掛程式式儲存引擎,它是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。
innodb:用於事務處理應用程式,具有眾多特性,包括acid事務支援。
bdb:可替代innodb的事務引擎,支援commit、rollback和其他事務特性。
memory:將所有資料儲存在ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。
merge:允許mysqldba或開發人員將一系列等同的myisam表以邏輯方式組合在一起,並作為1個物件引用它們。
archive:為大量很少引用的歷史、歸檔、或安全審計資訊的儲存和檢索提供了完美的解決方案。
federated:能夠將多個分離的mysql伺服器鏈結起來,從多個物理伺服器建立乙個邏輯資料庫。十分適合於分布式環境或資料集市環境。
cluster/ndb:mysql的簇式資料庫引擎,尤其適合於具有高效能查詢要求的應用程式。
3,簡述在mysql資料系統裡最常見的系統瓶項有那些?
1.磁碟搜尋。
2.磁碟讀/寫
3.cpu週期
4.記憶體頻寬
備註:磁碟搜尋。需要花時間從磁碟上找到乙個資料,用在現代磁碟的平均時間通常小於10ms,因此理論上我們能夠每秒大約搜尋1000次。這個時間在新磁碟上提高不大並且很難為乙個表進行優化。優化它的方法是將資料分布在多個磁碟上。
磁碟讀/寫。當磁碟放入正確位置後,我們需要從中讀取資料。對於現代的磁碟,乙個磁碟至少傳輸10-20mb/s的吞吐。這比搜尋要容易優化,因為你能從多個磁碟並行地讀。
cpu週期。我們將資料讀入記憶體後,需要對它進行處理以獲得我們需要的結果。表相對於記憶體較小是最常見的限制因素。但是對於小表,速度通常不成問題。
記憶體頻寬。當cpu需要的資料超出cpu快取時,主快取頻寬就成為記憶體的乙個瓶頸。這在大多數系統正是乙個不常見的瓶頸但是你應該知道它
4.mysql的備份有多少種,請簡要的描述:
a.直接拷貝資料檔案到安全地方進行儲存
b.使用mysqlhostcopy備分資料
c.使用mysqldump備份資料
d.使用mysql的同步複製,實現資料實時資料同步備份
5.mysql cluster 的環境主要由那三部份組成的?
1.管理各個節點的manage節點主機
2.sql層的sql伺服器節點
3.storage層的ndb資料節點。
二.綜合題
1. 為什麼要對mysql的表進行分割槽
1.與單個磁碟或檔案
系統分割槽相比,可以儲存更多的資料
2. 對於那些已經失去儲存意義的資料,通常可以通過刪除與那些資料有關的分割槽,很容易地刪除那些資料。相反地,在某些情況下,新增新資料的過程又可以通過為那些新資料專門增加乙個新的分割槽,來很方便地實現。
3. 一些查詢可以得到極大的優化
4. 涉及到例如sum()和count()這樣聚合函式的查詢,可以很容易地進行並行處理
5. 通過跨多個磁碟來分散資料查詢,來獲得更大的查詢吞吐量
2. 簡述mysql的常用的優化工具或監控工具有那些?
mysqlreport,mysqlsla
iostat ,vmstat,top
3. .優化innodb效能會考慮那幾方面?
1基礎設施:硬體,cpu,記憶體,磁碟等
2作業系統;os是基於linux還是windos同,及32位還是64位
3.mysql的innodb的設定,如:innodb_buffer_pool_size ,innodb_log_file_size ,innodb_log_buffer_size,innodb_flush_log_at_trx_commit,innodb_thread_concurrency,等
4.生產應用
5.標準的sql編寫
4. mysql使用者與許可權管理:
a)開放dba使用者管理mysql中具體資料庫(testdb)的許可權;
grant all privileges on testdb todba1@'192.168.0.10'identified by "dbapasswd";
b)開放user使用者管理mysql中具體資料庫的表(testdb.table1)的許可權
grant all on testdb.teable1 touser@'192.168.0.10'identified by "dbapasswd";
c)開放user使用者管理mysql中具體資料庫的表(testdb.table1)的部分列的許可權
grant select(id, se, rank) on testdb.table1to user@'192.168.0.10'identified by "dbapasswd";
5. 寫出innodb儲存引擎的基於二進位制時間點的備份與恢復,mysql的安裝目錄為:/usr/local/mysql,資料庫名為:db
全備份:/usr/local/mysql/bin/mysqldump --single-transaction--flush-logs --master-data=2 -u root -p*** db1>full_0625.sql
增量備份:用 flush logs 來生成資料庫增量備份(二進位制日誌檔案)
mysqladmin -u root -p*** flush-logs
每隔一段時間執行此步驟,來生成增量備份檔案,例如,每半小時或者每15分鐘。
恢復:第一種恢復
首先:/usr/local/mysql/bin/mysq -u root -p db1
然後:mysqlbinlog mysql-bin.000002 | mysql
mysqlbinlog mysql-bin.000003 | mysql
mysqlbinlog mysql-bin.000004 | mysql
mysqlbinlog mysql-bin.000005 | mysql
第二種恢復
1. /usr/local/mysql/bin/mysq -u root -p db1
2. 使用mysql工具 mysqlbinlog 來把增量備份產生的二進位制檔案轉化為 sql 文字檔案
mysqlbinlog -u root -p*** mysql-bin.000002 >mysql-bin.000002.sql
3. 依次使用 mysql 資料庫增量備檔案,來恢復資料庫
mysql -uroot -p***
mysql -uroot -p***
mysql -uroot -p***
mysql -uroot -p***
mysql -uroot -p***
6. 獲取mysql鎖的等待情況可以通過檢查那個變數來了解表的爭奪
table_locks_waited,table_locks_immediate
7. 請寫出mysql常用自帶工具的五種?
mysql,mysqladmin, mysqldump,mysqlhotcopy,mysqldumpslow
8. 優化innodb效能會考慮那幾方面?
待補充
面試題(個人總結)
執行緒啟動方式 r語言1.start 開啟執行緒,start是通過執行緒來呼叫run方法 2.run 此run非彼run 不是在run方法實現執行緒的邏輯,而是thread.run 這個run方法是直接呼叫了執行緒中的run 3.yield 暫停當前執行緒,並執行其他執行緒 4.sleep 使當前執...
PHP面試題 個人收集
1 php怎麼全域性捕獲異常 2 描述一下抽象類特點 3 memcache和redis的讀寫效能如何?兩者優缺點?redis支援哪些資料型別?redis如何持久化?4 現有乙個1g左右的日誌檔案,大約有500多萬行,用php返回最後幾行內容 5 http與https的區別,https怎樣保準安全 6...
前端面試題個人總結
css css問的不多,最主要的是對盒子模型的理解,我覺得關鍵是普通瀏覽器的盒子模型和ie特殊的盒子模型 box sizing屬性以及如何使特殊的ie模型相容。js es6的新特性 查閱 1 promise 原理 作用 單任務 多工的實現方法。又可能還會問到棧的概念,畢竟多工是儲存在棧內的 2 le...