Python面試資料庫

來源:互聯網
上載者:User

標籤:延時   資料量   臨時   情況下   plain   rdb   一個   memory   定義   

1.列舉常見的關係型資料庫和非關係型都有那些?    關係型 : MySQL,SQL Server ,Oracle , Sybase, DB2    非關係型 : Redis, MongodDB
2.MySQL常見資料庫引擎及比較?

  InnoDB,MyISAM,NDB,Memory等

3.簡述資料三大範式? 1. 第一範式:確保每列保持原子性 2. 第二範式:確保表中的每列都和主鍵相關 3. 第三範式:確保表中每一列都和主鍵列直接相關,而不是間接相關.詳情4.什什麼是事務?MySQL如何支援事務?

事務是邏輯上的一組操作,組成這組操作的各個單元,要不全都成功要不全都失敗,這個特性就是事務

5.簡述資料庫設計中一對多和多對多的應用情境?

一對多 : 一個學校有多個老師.

多對多 : 一個老師可以帶多個班級,一個班級有多個老師

6.如何基於資料庫實現商城商品計數器?

  詳情

7.常見SQL(必備)

  詳情

8.簡述觸發器?、函數、視圖、預存程序?

  詳情

觸發器: 在執行某種操作前後一些自訂的操作 函數: 處理參數,返回結果 視圖: 把需要的資料存放在一張暫存資料表中 預存程序: sql語句集,簡化了一些操作.與函數不同,他可以返回一個結果集(查詢結果)9.MySQL索引種類

  詳情

10.索引在什什麼情況下遵循最左首碼的規則?

聯合索引

11.主鍵和外鍵的區別?

主鍵 : 該表中此列唯一,非空

外鍵 : 該列中的值必須是關聯表中關聯的資料

12.MySQL常見的函數?

詳情

13.列舉 建立索引但是無法命中索引的8種情況。

詳情

14.如何開啟慢日誌查詢?

詳情

15.資料庫匯入匯出命令(結構+資料)?

  Mysqldump -h127.0.0.1 -P3306  -uroot -p密碼 資料庫名稱>xx.sql

16.資料庫最佳化方案?

詳情

17.char和varchar的區別?

#char類型:定長,簡單粗暴,浪費空間,存取速度快

#varchar類型:變長,精準,節省空間的,存取速度慢

18.簡述MySQL的執行計畫?

  詳情

19.在對name做了了唯?一索引前提下,簡述以下區別:
  • select * from tb where name = ‘Oldboy-Wupeiqi’
  • select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1

全域遍曆與只取一條

20.1000w條資料,使?用limit offset 分頁時,為什什麼越往後翻越慢?如何解決?

越是向後,掃描的資料也就越多

解決方案:按照需求實現,可分為

  • 限制瀏覽頁數,
  • 儲存本頁資料兩端的主鍵,按主鍵尋找後向前或向後取多少條
  • 另外,如果資料沒有缺失的話,還可以通過頁數來計算主鍵
21.什什麼是索引合并?

使用多個主鍵進行查詢

22.什什麼是覆蓋索引?

查詢內容在主鍵中可以直接查到

23.簡述資料庫讀寫分離?

建立主從關係,實現高可用,並減少主伺服器的壓力

24.簡述資料庫分庫分表?(水平、垂直)

水平 : 資料庫欄位過多

垂直 : 資料庫行數太多

25.redis和memcached比較?

詳情

26.redis中資料庫預設是多少個db 及作用?

0-15,相當於不同的庫

27.python操作redis的模組?

redis模組

28.如果redis中的某個列表中的資料量量非常大,如果實現迴圈顯示每一個值?
def list_iter(name):    """    自訂redis列表增量迭代    :param name: redis中的name,即:迭代name對應的列表    :return: yield 返回 列表元素    """    list_count = r.llen(name)    for index in xrange(list_count):        yield r.lindex(name, index)
29.redis如何?主從複製?以及資料同步機制?

在從伺服器中配置 SLAVEOF 127.0.0.1 6380 # 主伺服器IP,連接埠 

30.redis中的sentinel的作用?

監控主機狀態,實現高可用

31.如何?redis叢集?

 安裝叢集軟體

32.redis中預設有多少個雜湊槽?

16384

33.簡述redis的有哪幾種持久化策略略及比較?

---------rdb:快照形式是直接把記憶體中的資料儲存到一個dump檔案中,定時儲存,儲存策略

---------aof:把所有的對redis的伺服器進行修改的命令都存到一個檔案裡,命令的集合

34.列列舉redis支援的到期策略略。
  • voltile-lru:從已設定到期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰
  • volatile-ttl:從已設定到期時間的資料集(server.db[i].expires)中挑選將要到期的資料淘汰
  • volatile-random:從已設定到期時間的資料集(server.db[i].expires)中任意選擇資料淘汰
  • allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰
  • allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰
  • no-enviction(驅逐):禁止驅逐資料
35.MySQL 裡裡有 2000w 資料,redis 中只存 20w 的資料,如何保證 redis 中都是熱點資料?

redis記憶體資料級上升到一定大小時,就會實行資料淘汰策略,從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰

36.寫代碼,基於redis的列列表實現 先進先出、後進先出隊列列、優先順序隊列列。
class Zhan:    def __init__(self,conn):        self.conn = conn    def push(self,val):        self.conn.rpush(‘aaa‘,val)    def pop(self):        return self.conn.rpop(‘aaa‘) class Dui:    def __init__(self,conn):        self.conn = conn    def push(self,val):        self.conn.rpush(‘bbb‘,val)    def get(self):        return self.conn.lpop(‘bbb‘) class Xu:    def __init__(self,conn):        self.conn = conn    def push(self,val,count):        self.conn.zadd(‘ccc‘,val,count)    def get(self):        a = self.conn.zrange(‘ccc‘, 0, 0)[0]        self.conn.zrem(‘ccc‘, a)        return a
37.如何基於redis實現訊息佇列列?

將列表維護成一個棧,設定擷取資料的逾時時間

38.如何基於redis實現發布和訂閱?以及發布訂閱和訊息佇列列的區別?

發送訊息 : conn.publish(名稱,訊息)

接收訊息 : conn.sunscribe(名稱)

區別 :  訊息佇列,收到訊息只會有一個處理者;發布訂閱,所有的訂閱者都會收到訊息並進行處理

39.什麼是codis及作用?

豌豆莢團隊提供的一個分布式 Redis 解決方案

40.什麼是twemproxy及作用?

Twemproxy 又稱 nutcracker ,是一個memcache、redis協議的輕量級代理,一個用於sharding 的中介軟體。有了Twemproxy,用戶端不直接存取Redis伺服器,而是通過twemproxy 代理中介軟體間接訪問。

作用 : 對redis資料分區處理

41.寫代碼實現redis事務操作。
import redis  pool = redis.ConnectionPool(host=‘10.211.55.4‘, port=6379)  conn = redis.Redis(connection_pool=pool)  # transaction預設為False,只可以完成批量提交的作用,節省網路延時# 改為True後可以實現事務功能# pipe = r.pipeline(transaction=False)pipe = conn.pipeline(transaction=True)# 開始事務pipe.multi()  pipe.set(‘name‘, ‘alex‘)pipe.set(‘role‘, ‘sb‘)pipe.lpush(‘roless‘, ‘sb‘)  # 提交pipe.execute()
42.redis中的watch的命令的作用?

加鎖

43.基於redis如何?商城商品數量計數??

字串的decr可以實現自減操作

44.簡述redis分布式鎖?

為redis叢集設計的鎖,防止多個任務同時修改資料庫,其本質就是為叢集中的每個主機設定一個會逾時的字串,當叢集中有一半多的機器設定成功後就認為加鎖成功,直至鎖到期或解鎖不會有第二個任務加鎖成功

45.什麼是一致性雜湊?Python中是否有相應模組?

詳情

46.如何高效的找到redis中所有以oldboy開頭的key?
# 命令模式KEYS * # *代表萬用字元 # redis模組import rediscon = redis.Redis()con.keys(pattern=‘celery*‘) # *代表萬用字元

 

Python面試資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.