>>】091 數據庫死鎖概念多數情況下,可以認為如果一個資源被鎖定,它總會在以后某個時間被釋放。而死鎖發生在當多個進程訪問同一數據庫時,其中每個進程擁有的鎖都是其他進程所需的,由此造成每個進程都無法繼續下去。簡單的說,進程A等待進程B釋放他的資源,B又等待A釋放他的資源,">

多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 程序人生 > 程序員面試 > 【面試】【MySQL常見問題總結】【04】

【面試】【MySQL常見問題總結】【04】

來源:程序員人生   發布時間:2016-06-29 18:11:53 閱讀次數:6062次

【常見面試問題總結目錄>>>】


091 數據庫死鎖概念

  多數情況下,可以認為如果1個資源被鎖定,它總會在以后某個時間被釋放。而死鎖產生在當多個進程訪問同1數據庫時,其中每一個進程具有的鎖都是其他進程所需的,由此造成每一個進程都沒法繼續下去。簡單的說,進程A等待進程B釋放他的資源,B又等待A釋放他的資源,這樣就相互等待就構成死鎖。
  雖然進程在運行進程中,可能產生死鎖,但死鎖的產生也必須具有1定的條件,死鎖的產生必須具有以下4個必要條件。
  1)互斥條件:指進程對所分配到的資源進行排它性使用,即在1段時間內某資源只由1個進程占用。如果此時還有其它進程要求資源,則要求者只能等待,直至占有資源的進程用畢釋放。
  2)要求和保持條件:指進程已保持最少1個資源,但又提出了新的資源要求,而該資源已被其它進程占有,此時要求進程阻塞,但又對自己已取得的其它資源保持不放。
  3)不剝奪條件:指進程已取得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
  4)環路等待條件:指在產生死鎖時,必定存在1個進程——資源的環形鏈,即進程集合{P0,P1,P2,???,Pn}中的P0正在等待1個P1占用的資源;P1正在等待P2占用的資源,……,Pn正在等待已被P0占用的資源。
  以下方法有助于最大限度地下降死鎖:
  (1)按同1順序訪問對象。
  (2)避免事務中的用戶交互。
  (3)保持事務簡短并在1個批處理中。
  (4)使用低隔離級別。
  (5)使用綁定連接。

092 數據庫有幾種數據保護方式(AAA)

  實現數據庫安全性控制的經常使用方法和技術有:用戶標識和鑒別;存取控制;視圖機制;審計;數據加密;

093 union和union all 的區分和使用

  Union由于要進行重復值掃描,所以效力低。如果合并沒有刻意要刪除重復行,那末就使用Union All兩個要聯合的SQL語句 字段個數必須1樣,而且字段類型要“相容”(1致);
  union和union all的區分是,union會自動緊縮多個結果集合中的重復結果,而union all則將所有的結果全部顯示出來,不論是不是重復。
  Union:對兩個結果集進行并集操作,不包括重復行,同時進行默許規則的排序;
  Union All:對兩個結果集進行并集操作,包括重復行,不進行排序;
  Intersect:對兩個結果集進行交集操作,不包括重復行,同時進行默許規則的排序;
  Minus:對兩個結果集進行差操作,不包括重復行,同時進行默許規則的排序。
  可以在最后1個結果集中指定Order by子句改變排序方式。

094 mysql的備份命令是甚么

  mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
    備份MySQL數據庫為帶刪除表的格式
    備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫
  mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
    直接將MySQL數據庫緊縮備份
  mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
    備份MySQL數據庫某個(些)表
  mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
    同時備份多個MySQL數據庫
  mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
    僅僅備份數據庫結構
  mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
    備份服務器上所有數據庫
  mysqldump –all-databases > allbackupfile.sql
    還原MySQL數據庫的命令
  mysql -hhostname -uusername -ppassword databasename < backupfile.sql
    還原緊縮的MySQL數據庫
  gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
    將數據庫轉移到新服務器
  mysqldump -uusername -ppassword databasename | mysql –host=... -C databasename

095 在mysql服務器運行緩慢的情況下輸入甚么命令能減緩服務器壓力

  第1步 檢查系統的狀態
    通過操作系統的1些工具檢查系統的狀態,比如CPU、內存、交換、磁盤的利用率,根據經驗或與系統正常時的狀態相比對,有時系統表面上看起來看空閑,這也可能不是1個正常的狀態,由于cpu可能正等待IO的完成。除此以外,還應觀注那些占用系統資源(cpu、內存)的進程。
    1.1 使用sar來檢查操作系統是不是存在IO問題
    1.2 使用vmstat監控內存 cpu資源
    1.3 磁盤IO問題,處理方式:做raid10提高性能
    1.4 網絡問題,telnet1下MySQL對外開放的端口,如果不通的話,看看防火墻是不是正確設置了。另外,看看MySQL是否是開啟了skip-networking的選項,如果開啟請關閉。
  第2步 檢查mysql參數
    2.1 max_connect_errors
    2.2 connect_timeout
    2.3 skip-name-resolve
    2.4 slave-net-timeout=seconds
    2.5 master-connect-retry
  第3步 檢查mysql 相干狀態值
    3.1 關注連接數
    3.2 關注下系統鎖情況
    3.3 關注慢查詢(slow query)日志

096 怎樣導出表結構?

  1.導出全部數據庫
    mysqldump -u用戶名 -p密碼 數據庫名 > 導出的文件名
    C:\Users\jack> mysqldump -uroot -pmysql sva_rec > e:\sva_rec.sql
  2.導出1個表,包括表結構和數據
    mysqldump -u用戶名 -p 密碼 數據庫名 表名> 導出的文件名
    C:\Users\jack> mysqldump -uroot -pmysql sva_rec date_rec_drv> e:\date_rec_drv.sql
  3.導出1個數據庫結構
    C:\Users\jack> mysqldump -uroot -pmysql -d sva_rec > e:\sva_rec.sql
  4.導出1個表,只有表結構
    mysqldump -u用戶名 -p 密碼 -d數據庫名 表名> 導出的文件名
    C:\Users\jack> mysqldump -uroot -pmysql -d sva_rec date_rec_drv> e:\date_rec_drv.sql
  5.導入數據庫
    經常使用source 命令
    進入mysql數據庫控制臺,
    如mysql -u root -p
    mysql>use 數據庫
    然后使用source命令,后面參數為腳本文件(如這里用到的.sql)
    mysql>source d:wcnc_db.sql

097 正常登入MYSQL后使用甚么命令查看其進程是不是正常

  輸入show processlist;
  如果有SUPER權限,則可以看到全部的線程,否則,只能看到自己發起的線程(這是指,當前對應的MySQL帳戶運行的線程)。

098 mysql遠程連接命令

  1、MySQL 連接本地數據庫,用戶名為“root”,密碼“123”(注意:“-p”和“123” 之間不能有空格)
    C:>mysql -h localhost -u root -p123
  2、MySQL 連接遠程數據庫(192.168.0.201),端口“3306”,用戶名為“root”,密碼“123”
    C:>mysql -h 192.168.0.201 -P 3306 -u root -p123

099 mysql主從用甚么方式傳輸日志

  MySQL 復制基于主服務器在2進制日志中跟蹤所有對數據庫的更改(更新、刪除等等)。每一個從服務器從主服務器接收主服務器已記錄到其2進制日志的保存的更新,以便從服務器可以對其數據拷貝履行相同的更新。

100 數據庫的備份方式

  1、完全備份,這是大多數人經常使用的方式,它可以備份全部數據庫,包括用戶表、系統表、索引、視圖和存儲進程等所有數據庫對象。但它需要花費更多的時間和空間,所以,1般推薦1周做1次完全備份。
  2、事務日志備份,事務日志是1個單獨的文件,它記錄數據庫的改變,備份的時候只需要復制自上次備份以來對數據庫所做的改變,所以只需要很少的時間。為了使數據庫具有魯棒性,推薦每小時乃至更頻繁的備份事務日志。
  3、差異備份也叫增量備份。它是只備份數據庫1部份的另外一種方法,它不使用事務日志,相反,它使用全部數據庫的1種新映象。它比最初的完全備份小,由于它只包括自上次完全備份以來所改變的數據庫。它的優點是存儲和恢復速度快。推薦每天做1次差異備份。
  4、文件備份數據庫可以由硬盤上的許多文件構成。如果這個數據庫非常大,并且1個晚上也不能將它備份完,那末可使用文件備份每晚備份數據庫的1部份。由于1般情況下數據庫不會大到必須使用多個文件存儲,所以這類備份不是很經常使用。

101 查看mysql數據庫是不是支持innodb

  查看mysql的存儲引擎:show plugins;
  如何在mysql某個表中隨機抽取10條記錄
  1.通過MYSQL內置的函數來操作,具體SQL代碼以下:
    SELECT * FROM tablename ORDER BY RAND() LIMIT 10
  2.不要將大量的工作給數據庫去做,這樣會致使數據庫在某1集中并發時間內鎖死并阻塞。建議通過PHP隨機生成1下1-X(總行數)之間的數字,然后將這10個隨機數字作為查詢條件,具體語句如:
    SELECT * FROM tablename where ID in (2,8,4,11,12,9,3,1,33)
  可能你還要進行重復排除,并且需要在程序中將10個值串連并連接進入SQL語句中。

102 如何查看連接mysql確當前用戶。

  show full processlist,在user字段中查看有哪些用戶

103 寫出mysql怎樣修改密碼?

  方法1: (適用于管理員或有全局權限的用戶重設其它用戶的密碼)
    進入命令行模式
    mysql -u root -p
    mysql>use mysql;
    mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=’username’;
    mysql> FLUSH PRIVILEGES;
    mysql> quit;
  方法2:
    mysql -u root -p
    mysql>use mysql;
    mysql> SET PASSWORD FOR username=PASSWORD(‘new password’);
    mysql> QUIT
  方法3:
    mysqladmin -u root “old password” “new password”
  注:new password請輸入你想要設置的密碼。

104 MySQL怎樣修復破壞的表?

  有兩種方法,1種方法使用mysql的check table和repair table 的sql語句,另外一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。

105 簡單敘述1下MYSQL的優化(重點)

  1.數據庫的設計:盡可能把數據庫設計的更小的占磁盤空間.
    1) 盡量使用更小的整數類型.(mediumint就比int更適合).
    2) 盡量的定義字段為not null,除非這個字段需要null.
    3) 如果沒有用到變長字段的話比如varchar,那就采取固定大小的紀錄格式比如char.
    4) 表的主索引應當盡量的短.這樣的話每條紀錄都著名字標志且更高效.
    5) 只創建確切需要的索引。索引有益于檢索記錄,但是不利于快速保存記錄。如果總是要在表的組合字段上做搜索,那末就在這些字段上創建索引。索引的第1部份必須是最常使用的字段.如果總是需要用到很多字段,首先就應當多復制這些字段,使索引更好的緊縮。
    6) 所有數據都得在保存到數據庫前進行處理。
    7) 所有字段都得有默許值。
    8) 在某些情況下,把1個頻繁掃描的表分成兩個速度會快好多。在對動態格式表掃描以獲得相干記錄時,它可能使用更小的靜態格式表的情況下更是如此。
  2.系統的用處
    1) 盡可能使用長連接.
    2) explain復雜的SQL語句。
    3) 如果兩個關聯表要做比較話,做比較的字段必須類型和長度都1致.
    4) LIMIT語句盡可能要跟order by或 distinct.這樣可以免做1次full table scan.
    5) 如果想要清空表的所有紀錄,建議用truncate table tablename而不是delete from tablename.
    6) 能使用STORE PROCEDURE 或 USER FUNCTION的時候.
    7) 在1條insert語句中采取多重紀錄插入格式.而且使用load data infile來導入大量數據,這比單純的insert快好多.
    8) 常常OPTIMIZE TABLE 來整理碎片.
    9) 還有就是date 類型的數據如果頻繁要做比較的話盡可能保存在unsigned int 類型比較快。
  3.系統的瓶頸
    1) 磁盤搜索。并行搜索,把數據分開寄存到多個磁盤中,這樣能加快搜索時間.
    2) 磁盤讀寫(IO)。可以從多個媒介中并行的讀取數據。
    3) CPU周期。數據寄存在主內存中.這樣就得增加CPU的個數來處理這些數據。
    4) 內存帶寬。當CPU要將更多的數據寄存到CPU的緩存中來的話,內存的帶寬就成了瓶頸.

106 如何肯定有哪些存儲引擎可用?

  mysql> show engines; 顯示了可用的數據庫引擎的全部名單和在當前的數據庫服務器中是不是支持這些引擎。

107 MYSQL數據庫設計數據類型選擇需要注意哪些地方?(重點)

  VARCHAR和CHAR類型,varchar是變長的,需要額外的1⑵個字節存儲,能節儉空間,可能會對性能有幫助。但由因而變長,可能產生碎片,如更新數據;
使用ENUM代替字符串類型,數據實際存儲為整型。
  字符串類型
  要盡量地避免使用字符串來做標識符,由于它們占用了很多空間并且通常比整數類型要慢。特別注意不要在MYISAM表上使用字符串標識符。MYISAM默許情況下為字符串使用了緊縮索引(Packed Index),這使查找更加緩慢。據測試,使用了緊縮索引的MYISAM表性能要慢6倍。
  還要特別注意完全‘隨機’的字符串,例如由MD5()、SHA1()、UUID()產生的。它們產生的每個新值都會被任意地保存在很大的空間范圍內,這會減慢INSERT及1些SELECT查詢。
    1)它們會減慢INSERT查詢,由于插入的值會被隨機地放入索引中。這會致使分頁、隨機磁盤訪問及聚集存儲引擎上的聚集索引碎片。
    2)它們會減慢SELECT查詢,由于邏輯上相鄰的行會散布在磁盤和內存中的各個地方。
    3)隨機值致使緩存對所有類型的查詢性能都很差,由于它們會使緩存賴以工作的訪問局部性失效。如果全部數據集都變得一樣“熱”的時候,那末把特定部份的數據緩存到內存中就沒有任何的優勢了。并且如果工作集不能被裝入內存中,緩存就會進行很多刷寫的工作,并且會致使很多緩存未命中。
  如果保存UUID值,就應當移除其中的短橫線,更好的辦法是使用UHEX()把UUID值轉化為16字節的數字,并把它保存在BINARY(16)列中。

108 mysql、oracle默許端口號

  3306、1521

109 innodb的事務與日志的實現方式。

  (1)有多少種日志
    毛病日志:記錄出錯信息,也記錄1些正告信息或正確的信息
    慢查詢日志:設置1個閾值,將運行時間超過該值的所有SQL語句都記錄到慢查詢的日志文件中。
    2進制日志:記錄對數據庫履行更改的所有操作
    查詢日志:記錄所有對數據庫要求的信息,不論這些要求是不是得到了正確的履行。
  (2)日志的寄存情勢
  (3)事務是如何通過日志來實現的,說得越深入越好。
  在Innodb存儲引擎中,事務日志是通過redo和innodb的存儲引擎日志緩沖(Innodb log buffer)來實現 的,當開始1個事務的時候,會記錄該事務的lsn(log sequence number)號; 當事務履行時,會往InnoDB存 儲引擎的日志的日志緩存里面插入事務日志;當事務提交時,必須將存儲引擎的日志緩沖寫入磁盤(通過 innodb_flush_log_at_trx_commit來控制),也就是寫數據前,需要先寫日志。這類方式稱為“預寫日志方 式”, innodb通過此方式來保證事務的完全性。也就意味著磁盤上存儲的數據頁和內存緩沖池上面的頁是不同步 的,是先寫入redo log,然后寫入data file,因此是1種異步的方式。
  隔離性: 通過鎖實現
  原子性1致性持久性是通過redo和undo來完成的。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品国产中文一级毛片在线看 | 九九99久久精品在免费线bt | 最近免费中文字幕大全视频 | 国产一级做性视频 | 国产亚洲综合精品一区二区三区 | xxxxxx日本处大片免费看 | 69av视频在线 | 久久www免费人成看国产片 | 性欧美video另类hd亚洲人 | 国产偷啪视频一区 | 欧美视频不卡 | 国产精品久久久久久久久免费 | 宇都宫紫苑在线 | 激情另类国内一区二区视频 | 亚洲欧美人成人综合在线50p | www.欧美xxxx | 国产精品成人久久久久久久 | 免费国产一区二区在免费观看 | 毛片大全在线 | 欧美午夜在线观看理论片 | 毛片福利 | 亚洲成在线 | 日韩中文字幕高清在线专区 | 亚洲高清中文字幕 | 真实的伦伦啪啪 | 国产亚洲精品久久久久久午夜 | 亚洲天堂久久久 | 成人手机看片 | 日本免费一区二区三区视频 | 国产欧美二区三区 | 在线成人免费视频 | 开操网| 最近最新高清免费中文字幕 | 亚洲成人免费视频在线 | 成a人v欧美综合天堂 | freeⅹxx69性欧美按摩 | 亚洲精品短视频 | 亚洲毛片免费在线观看 | 国产精品极品美女自在线看免费一区二区 | 欧美jizzhd精品欧美另类 | 日韩欧美亚洲一区 |