Hacker News

Ny tadin'ny C# dia mamono mangina ny fanondroanao SQL Server ao Dapper

Comments

8 min read Via consultwithgriff.com

Mewayz Team

Editorial Team

Hacker News

Ny String C# dia manakenda mangina ny fahombiazan'ny angonao

Raha mpamorona .NET mampiasa Dapper ianao amin'ny fidiranao angona, dia nanao safidy tsara ho an'ny fampisehoana sy ny fahatsorana ianao. Dapper dia micro-ORM mahafinaritra izay mitazona anao akaiky ny metaly, misoroka ny ambony sy ny fahasarotan'ny rafitra lehibe kokoa. Saingy io hery io dia miaraka amin'ny andraikitra. Ny fahazarana manao kaody toa tsy manan-tsiny, miparitaka amin'ny rindranasa C#, dia azo inoana fa manakorontana ny fahombiazan'ny SQL Server anao: mampiasa litera an-tsoratra an-tsoratra ho an'ny fangatahana SQL. Ity fomba fanao ity dia mamono mangina ny fahombiazan'ny tondro-panondrom-pahitalavitra nomaninao amim-pitandremana, ka mitarika amin'ny fanontaniana miadana sy tsy fahampian'ny traikefan'ny mpampiasa. Ho an'ny sehatra toa an'i Mewayz, izay tena zava-dehibe amin'ny fitantanana ny asa fandraharahana ny fitantanana angon-drakitra mahomby, ity dia famonoana tsy takatry ny sainao.

Ny ody fanondroana sy ny Mpamonjy voafantina

Voalohany, andeha hojerentsika ny antony maha-zava-dehibe ny fanondroana. Ny index database dia toy ny index ao anaty boky; mamela ny SQL Server hahita angon-drakitra tsy misy scan ny pejy tsirairay (na andalana). Rehefa mametraka fanontaniana miaraka amin'ny clause `WHERE` ianao, dia mitady ny tondro tsara indrindra hampiasaina ny optimizer fanontaniana. Ny fanalahidin'ity ody ity dia ny vinavina. Rehefa mampiasa fanontaniana voatokana ianao, dia omenao lamina mazava sy tsy miovaova ny optimizer hampiasaina.

Ity ny fahasamihafana. Diniho ireto ohatra roa Dapper ireto:

// BAD - Fampifandraisan-tady
ity var userId = "12345";
var sql = $"SELECT * FROM Users WHERE UserId = {userId}";
var user = connection.Query(sql);

mifanohitra

// TSARA ity - Fanontaniana voafantina
var sql = "SIFIDY * FROM Users WHERE UserId = @UserId";
var user = connection.Query(sql, new { UserId = 12345 });

Ny ohatra voalohany dia mamorona tady SQL tokana ho an'ny `userId' samihafa. Avy amin'ny fomba fijerin'ny SQL Server dia mahita fanontaniana vaovao tanteraka izy isaky ny mandeha: iray ho an'ny `UserId = 12345`, iray hafa ho an'ny `UserId = 67890`, sy ny sisa. Ny ohatra faharoa dia mandefa tady fangatahana mitovy isaky ny manova ny sandan'ny parameter. Io tsy fitoviana io no fototry ny fanatanterahana fanontaniana mahomby.

Ahoana ny drafitry ny fangataham-panontaniana amin'ny String

Ny fototry ny olana dia ao amin'ny Query Plan Cache. Ny SQL Server dia manambatra ny tady SQL-nao ho drafi-panatanterahana — drafi-drafitra momba ny fomba hakana ny angona. Lafo io fitambarana io, ka ny SQL Server dia mitahiry ireo drafitra ireo hampiasaina indray. Miaraka amin'ny fanontaniana voafaritra, ny drafitra ho an'ny `SELECT * FROM Users WHERE UserId = @UserId` dia natambatra indray mandeha, voatahiry ary ampiasaina indray isaky ny antso manaraka, na inona na inona sandan'ny ID. Ity drafitra voatahiry ity dia natao hampiasana tsara ny tondro ao amin'ny tsanganana `UserId.

Rehefa mampiasa litera tady inline ianao, dia miteraka tady SQL tokana ny sanda tokana tsirairay. Ny SQL Server dia mandray ny tsirairay ho toy ny fanontaniana vaovao, manery azy handany ny tsingerin'ny CPU amin'ny fanangonana ary mamorona drafitra famonoana vaovao isaky ny mandeha. Izany dia manondraka haingana ny cache plan miaraka amin'ny drafitra saika mitovy amin'ny fampiasana tokana, mandroaka drafitra mahasoa hafa ary mandany fahatsiarovana. Ny tena manan-danja kokoa, matetika ny optimizer dia tsy afaka mampiasa ny mari-pamantarana tsara indrindra ho an'ireo fanontaniana tokana ireo, indraindray miteraka fisavana latabatra fa tsy fitadiavana. Lasa haingo tsy misy ilana azy ny fanondroanao tena tsara.

Ny fiantraikan'ny zava-bita tsy azonao tsinontsinoavina

Ny voka-dratsin'ity anti-pattern ity dia henjana sy mitambatra rehefa mandeha ny fotoana.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  • Fampiasana CPU avo lenta: Ny fanangonana fanontaniana tsy tapaka dia mampitombo ny CPU an'ny mpizara database-nao.
  • Fotoan'ny famaliana ny fanontaniana miadana: Mitaky elaela ny fanontaniana satria tsy ampy ny cache ary mety hanao scan feno amin'ny latabatra.
  • Plan Cache Bloat: Ny cache dia tsentsina amin'ny drafitra ampiasaina tokana, manimba ny fanatanterahana ny fanontaniana rehetra ao amin'ny server.
  • Risika amin'ny fiarovana: Ity fomba fiasa ity dia manokatra ny varavarana amin'ny fanafihana tsindrona SQL, vulnerability manan-danja izay misoroka ny fanontaniako manokana.

Ho an'ny rafitra fiasan'ny orinasa toa an'i Mewayz, izay mitantana angon-drakitra modular be pitsiny ho an'ny orinasa, ireo olana ireo dia mety hanimba ny fandraisan'ny fampiharana izany, ary hisy fiantraikany mivantana amin'ny vokatra sy fahafaham-po ny mpampiasa.

Famahana ny olana: Raiso ny mari-pamantarana ary avereno jerena ny fehezan-dalànao

Tsotra ny vahaolana ary mifanaraka amin'ny fanao tsara indrindra tokony ho arahinao. Mampiasà fanontaniana voafaritra miaraka amin'i Dapper foana. Manamora izany ny Dapper amin'ny alàlan'ny famelana anao handefa masontsivana ho zavatra tsy fantatra anarana na masontsivana mavitrika. Tsy vitan'ny hoe miaro ny fampiharanao amin'ny tsindrona SQL izany fa miantoka ihany koa fa ny fangatahanao dia mety amin'ny cache ary afaka mampiasa tsara ny fanondroanao.

Ankoatra izany, araho tsy tapaka ny cache drafitry ny SQL Server-nao. Mitadiava fanontaniana "Adhoc" be dia be, izay matetika no famantarana ny olana. Mampiasà fitaovana toy ny SQL Server Management Studio (SSMS) handinihana ny fahombiazan'ny fangatahana ary hamantarana ny scan izay tokony hitranga. Amin'ny alàlan'ny fanarahana ny mari-pamantarana sy ny fanaraha-maso mavitrika, dia manokatra tanteraka ny sarin'ny angon-drakitrao ianao, miantoka fa ny sehatra toa an'i Mewayz dia afaka manome ny fampisehoana haingana sy azo antoka izay takian'ny orinasa maoderina.

Fanontaniana matetika

Ny Strings C# dia manakenda mangina ny fahombiazan'ny angonao

Raha mpamorona .NET mampiasa Dapper ianao amin'ny fidiranao angona, dia nanao safidy tsara ho an'ny fampisehoana sy ny fahatsorana ianao. Dapper dia micro-ORM mahafinaritra izay mitazona anao akaiky ny metaly, misoroka ny ambony sy ny fahasarotan'ny rafitra lehibe kokoa. Saingy io hery io dia miaraka amin'ny andraikitra. Ny fahazarana manao kaody toa tsy manan-tsiny, miparitaka amin'ny rindranasa C#, dia azo inoana fa manakorontana ny fahombiazan'ny SQL Server anao: mampiasa litera an-tsoratra an-tsoratra ho an'ny fangatahana SQL. Ity fomba fanao ity dia mamono mangina ny fahombiazan'ny tondro-panondrom-pahitalavitra nomaninao amim-pitandremana, ka mitarika amin'ny fanontaniana miadana sy tsy fahampian'ny traikefan'ny mpampiasa. Ho an'ny sehatra toa an'i Mewayz, izay tena zava-dehibe amin'ny fitantanana ny asa fandraharahana ny fitantanana angon-drakitra mahomby, ity dia famonoana tsy takatry ny sainao.

Ny ody fanondroana sy ny Mpamonjy voafantina

Voalohany, andeha hojerentsika ny antony maha-zava-dehibe ny fanondroana. Ny index database dia toy ny index ao anaty boky; mamela ny SQL Server hahita angon-drakitra tsy misy scan ny pejy tsirairay (na andalana). Rehefa mametraka fanontaniana miaraka amin'ny clause `WHERE` ianao, dia mitady ny tondro tsara indrindra hampiasaina ny optimizer fanontaniana. Ny fanalahidin'ity ody ity dia ny vinavina. Rehefa mampiasa fanontaniana voatokana ianao, dia omenao lamina mazava sy tsy miovaova ny optimizer hampiasaina.

Ahoana ny fandravana ny drafitry ny fangataham-panontaniana amin'ny string

Ny fototry ny olana dia ao amin'ny Query Plan Cache. Ny SQL Server dia manambatra ny tady SQL-nao ho drafi-panatanterahana — drafi-drafitra momba ny fomba hakana ny angona. Lafo io fitambarana io, ka ny SQL Server dia mitahiry ireo drafitra ireo hampiasaina indray. Miaraka amin'ny fanontaniana voafaritra, ny drafitra ho an'ny `SELECT * FROM Users WHERE UserId = @UserId` dia natambatra indray mandeha, voatahiry ary ampiasaina indray isaky ny antso manaraka, na inona na inona sandan'ny ID. Ity drafitra voatahiry ity dia natao hampiasana tsara ny tondro ao amin'ny tsanganana `UserId.

Ny fiantraikan'ny zava-bita tsy azonao tsinontsinoavina

Ny voka-dratsin'ity anti-pattern ity dia henjana sy mitambatra rehefa mandeha ny fotoana.

Famahana ny olana: Raiso ny mari-pamantarana ary avereno jerena ny fehezan-dalànao

Tsotra ny vahaolana ary mifanaraka amin'ny fanao tsara indrindra tokony ho arahinao. Mampiasà fanontaniana voafaritra miaraka amin'i Dapper foana. Manamora izany ny Dapper amin'ny alàlan'ny famelana anao handefa masontsivana ho zavatra tsy fantatra anarana na masontsivana mavitrika. Tsy vitan'ny hoe miaro ny fampiharanao amin'ny tsindrona SQL izany fa miantoka ihany koa fa ny fangatahanao dia mety amin'ny cache ary afaka mampiasa tsara ny fanondroanao.

Ny Fitaovam-barotrao rehetra amin'ny toerana iray

Atsaharo ny fanaovana juggling fampiharana maro. Mewayz dia manambatra fitaovana 208 ho an'ny $ 49 / volana fotsiny - manomboka amin'ny fitahirizana mankany amin'ny HR, famandrihana mankany amin'ny analytics. Tsy ilaina ny carte de crédit hanombohana.

Andramo maimaim-poana ny Mewayz →