python面试总结(五)内存管理与MYSQL引擎选择
當內(nèi)存中有不再使用的部分時,垃圾收集器就會把他們清理掉
Python引入了機制:引用計數(shù)與分代回收。
Python提供了對內(nèi)存的垃圾收集機制,
但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。
2.談談你對線程安全的理解?
線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數(shù)據(jù)時,進行保護,
其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。
不會出現(xiàn)數(shù)據(jù)不一致或者數(shù)據(jù)污染。
3.事務的特性 ?
1.原子性
2.一致性
3.隔離性
4.持久性
4.什么是阻塞,什么是非阻塞?
阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當前線程會被掛起。調(diào)用線程只有在得到結(jié)果之后才會返回。
非阻塞調(diào)用指在不能立刻得到結(jié)果之前,該調(diào)用不會阻塞當前線程。
5.父子進程間有哪些異同,是否共享數(shù)據(jù)?(共享哪些數(shù)據(jù)?)
父子進程共享“文件表項”(file對象),同dup一樣,這會增加“文件達開計數(shù)”
(file對象的引用計數(shù)),只不過fork增加的引用計數(shù)來自不同進程(父進程和子進程)
中的描述符,dup增加的引用來自同一文件描述符。
但父子進程獨立運行后再打開的文件就不在共享file對象,
這個兩個獨立進程打開文件情況一樣。
父子進程傳遞文件描述符和兩獨立進程傳遞描述符性質(zhì)一樣。
共享數(shù)據(jù)是線程 ?
創(chuàng)建一個線程后他們的數(shù)據(jù)是共享的 ??
他們是同一個數(shù)據(jù)
6.Mysql的常用引擎及選擇?
1.Innodb引擎,Innodb引擎提供了對數(shù)據(jù)庫ACID事務的支持。
并且還提供了行級鎖和外鍵的約束。
它的設(shè)計的目標就是處理大數(shù)據(jù)容量的數(shù)據(jù)庫系統(tǒng)。
它本身實際上是基于Mysql后臺的完整的系統(tǒng)。
Mysql運行的時候,Innodb會在內(nèi)存中建立緩沖池,用于緩沖數(shù)據(jù)和索引。
但是,該引擎是不支持全文搜索的。同時,啟動也比較的慢,它是不會保存表的行數(shù)的。
當進行Select count(*) from table指令的時候,需要進行掃描全表。
所以當需要使用數(shù)據(jù)庫的事務時,該引擎就是首選。
由于鎖的粒度小,寫操作是不會鎖定全表的。
所以在并發(fā)度較高的場景下使用會提升效率的。
2.MyIASM引擎,它是MySql的默認引擎,但不提供事務的支持,也不支持行級鎖和外鍵。
因此當執(zhí)行Insert插入和Update更新語句時,即執(zhí)行寫操作的時候需要鎖定這個表。
所以會導致效率會降低。不過和Innodb不同的是,MyIASM引擎是保存了表的行數(shù),
于是當進行Select count(*) from table語句時,可以直接的讀取已經(jīng)保存的值而不需要進行掃描全表。
所以,如果表的讀操作遠遠多于寫操作時,并且不需要事務的支持的。
可以將MyIASM作為數(shù)據(jù)庫引擎的首先。
總結(jié)
以上是生活随笔為你收集整理的python面试总结(五)内存管理与MYSQL引擎选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php7 关联nginx,nginx+p
- 下一篇: 11.MYSQL高级(一)