MySQL支持事務,其設計目標主要面向聯機事務處理(OLTP)的應用。其mysql
特色是行鎖設計、支持外鍵,並支持相似 Oracle 的非鎖定讀,即默認讀取操做不會產生鎖。 從 MySQL 5.5.8 版本開始是默認的存儲引擎。sql
進程間通訊(IPC)方式主要包括如下幾種: (1)管道,分爲有名管道和無名管道,是一種半雙工的通訊方式。 (2)信號量,信號量是一個計數器,能夠用來控制多個線程對共享資源的訪問。 (3)信號,信號是一種比較複雜的通訊方式,用於通知接收進程某個事件已經發生。 (4)消息隊列,息隊列是消息的鏈表,存放在內核中並由消息隊列標識符標識。 (5)共享內存,共享內存就是映射一段能被其餘進程所訪問的內存,這段共享內存由一個進程建立,但多個進程均可以訪問.共享內存是最快的IPC(進程間通訊)方式。 (6)套接字:可用於不一樣及其間的進程通訊。
索引的本質就是排序。 數據庫
固然,咱們通常不會把原始數據集排序,而是把每條記錄的鍵值和這條記錄在數據集中的位置,按鍵值次序作成一個規模較小的數據集,這也就是索引表了。若是還有其它字段也要用於鍵值查找,則能夠再創建別的索引。原始數據集只有一份,索引能夠有多個,若是每一個索引都把原始數據集排序,則會使數據集被複制不少遍,佔用空間過大。 緩存
另外,數據庫在創建索引時還要考慮數據會插入刪除,簡單排序的索引會致使插入刪除的成本很是高,這時通常會使用B樹以方便快速更新。B樹至關於把二叉樹擴展成n叉樹,本質上仍然是鍵值有序。(索引如何創建的話題內容很多,咱們將另行撰文討論,這裏只研討索引使用) 函數
還有一種引伸出來的方法是HASH索引,計算記錄鍵值的某種HASH值,散列到1...k的天然數範圍。這樣查找時連二分比較也沒必要作,直接用HASH值定位了。HASH方法只用來作鍵值的精確查找,不能用來實現區間查找,由於HASH函數並不單調,已經失去原來鍵值的大小信息了,不過這在許多場景下也夠用(按身份證號找人)。HASH索引本質上也是排序,只是用了鍵值的HASH值來排序。咱們下面的討論仍是以普通鍵值排序爲例,結論也適用於HASH索引。spa
from threading import Thread,Event,currentThread import time event = Event() def task(): event.wait() for i in range(3): print("name:%s ,time:%s"%(currentThread().getName(),time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))) # print('name:%s time:%s'%(currentThread().getName(),time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))) if __name__ == '__main__': for i in range(10): t =Thread(target=task) t.start() time.sleep(10) event.set()
二、寫一個程序,利用queue實現進程間通訊;
q = Queue() def producer(q): for i in range(3): q.put('name:%s is runing %s'%(current_process().name,i)) def consumer(q): while True: res = q.get() if not res:break print(res) if __name__ == '__main__': p1 =Process(target=producer,args=(q,)) p2 = Process(target=producer, args=(q,)) p3 = Process(target=producer, args=(q,)) p4 = Process(target=consumer, args=(q,)) p5 = Process(target=consumer, args=(q,)) p1.start() p2.start() p3.start() p4.start() p5.start() p1.join() p2.join() p3.join() q.put(None) q.put(None) print('main')
create table student1(
id int primary key auto_increment,
sname varchar(16) not null,
gender enum('男','女') default '男',
credit varchar(20)
);操作系統
insert into student1(sname,gender) values('alex','女');線程
update student1 set sname='wupeiqi' where id =1;設計
delete from student1 where sname ='wupeiqi';code
import pymysqlconn = pymysql.connect(host= 'localhost',user='root',password='123',database='db6')cursor =conn.cursor()sql = 'insert into student1(sname,gender) values("egon","男")'cursor.execute(sql)conn.commit()