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